亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么設計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

鸡西市| 巴青县| 卓尼县| 麟游县| 苏尼特右旗| 墨玉县| 宁晋县| 江源县| 金溪县| 吉林省| 调兵山市| 梨树县| 安新县| 榆中县| 汉源县| 左权县| 临朐县| 逊克县| 乐陵市| 班戈县| 夏河县| 额济纳旗| 沙洋县| 南通市| 海南省| 宾阳县| 通渭县| 永宁县| 张掖市| 曲麻莱县| 西青区| 特克斯县| 安康市| 南宁市| 江山市| 九台市| 类乌齐县| 开江县| 竹山县| 东乌珠穆沁旗| 尚志市|