91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么設計RESTFUL接口?

發布時間:2020-05-30 01:07:42 來源:億速云 閱讀:262 作者:鴿子 欄目:編程語言

一 、引入

設計接口是我們開發人員的日常操作。當我們把接口交給前端人員時,是否有種拔劍出鞘的錯覺。畢竟交付接口,我們的開發工作就階段性完成了。

二、REST

2000年,一個年輕小伙子(Roy Thomas Fielding)在他的博士論文提出了 REST。REST 是一種萬維網軟件架構風格。為什么說是風格不是標準呢?個人理解可能說標準就有點過分了。小伙子做不到。隨后這種風格被推廣開來,漂洋過海,被大眾熟知。在 REST 的基礎上,產生了 RESTFUL 。什么是 RESTFUL?簡單的說,符合 REST 風格的接口就是 RESTFUL。

HTTP 的方法

HTTP 里面有幾個基本的方法。我們利用這些約定一些規范。

方法作用
GET獲取數據
POST插入數據
PUT更新數據
DELECT刪除數據

從表中,如果我們可以清楚看到當我們的接口是關于獲取數據,那么我們使用 GET 方法。
如果我們可以清楚看到當我們的接口是關于插入數據,那么我們使用 POST 方法。
如果我們可以清楚看到當我們的接口是關于更新數據,那么我們使用 PUT 方法。
如果我們可以清楚看到當我們的接口是關于刪除數據,那么我們使用 DELECT 方法。

名詞

在上面我們已經知道接口在什么時候需要什么方法,那么我們現在來進入到設計接口的第二步。

我們看看線上網站的接口是怎么樣的。

怎么設計RESTFUL接口?

圖中我們可以看到有個 v1 ,他代表的是版本號,所以我們在設計接口的時候可以在將版本號寫上,用 v1、v2、v3 等表示。

我們發現他的接口都是名詞。所以我們知道 RESTFUL 接口使用的是名詞。比如我們設計一個獲取數據的接口,我們可這樣設計

/v1/list 

上面接口是獲取所有數據。

當我們需要列表中的一條數據,我們可以這樣設計

/v1/list/1 

上面接口表示獲取是列表的1號數據,我們可以獲取2號、3號數據等等,只要改變數字即可。

組合

結合上面兩步,我們就可以設計出增刪改查的 restful 接口了。

接口方法作用
/v1/listGET獲取列表
/v1/listPOST增加列表
/v1/listPUT更新列表
/v1/listDELECT刪除列表

應用

以下是源碼的demo

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
@Slf4j
public class LsbRestfulApplication {

    public static void main(String[] args) {
        SpringApplication.run(LsbRestfulApplication.class, args);
    }

    /**
     * 得到所有列表
     * @return
     */
    @RequestMapping(value = "/v1/list",method = RequestMethod.GET)
    public String getList(){
        log.info("得到列表");
        return "得到列表";
    }

    /**
     * 得到列表中的一條
     * @param name
     * @return
     */
    @RequestMapping(value = "/v1/list/{name}",method = RequestMethod.GET)
    public String getListone(@PathVariable("name") String name){
        log.info("得到列表"+name);
        return "得到列表"+name;
    }

    /**
     * 往列表中的增加一條數據
     * @return
     */
    @RequestMapping(value = "/v1/list",method = RequestMethod.POST)
    public String addList(){
        log.info("增加一個列表1");
        return "增加一個列表1";
    }

    /**
     * 更新列表中的一條數據
     * @return
     */
    @RequestMapping(value = "/v1/list/{name}",method = RequestMethod.PUT)
    public String updateListOne(@PathVariable("name") String name){
        log.info("更新列表"+name);
        return "更新列表"+name;
    }

    /**
     * 刪除所有列表
     * @return
     */
    @RequestMapping(value = "/v1/list",method = RequestMethod.DELETE)
    public String delList(){
        log.info("刪除一個列表");
        return "刪除一個列表";
    }
}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宿迁市| 和顺县| 赣州市| 涡阳县| 镶黄旗| 墨脱县| 含山县| 井研县| 修文县| 武清区| 夏邑县| 耒阳市| 兴义市| 新龙县| 崇左市| 新郑市| 横峰县| 闽侯县| 双鸭山市| 湾仔区| 基隆市| 府谷县| 弥渡县| 北流市| 宣化县| 钦州市| 句容市| 益阳市| 清苑县| 焦作市| 屯门区| 平乡县| 许昌县| 广东省| 三亚市| 遂平县| 巴南区| 阳朔县| 仪陇县| 新津县| 怀化市|