中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

安化县| 潞城市| 永仁县| 保康县| 潼南县| 犍为县| 梧州市| 曲阜市| 平乐县| 常宁市| 卓资县| 广安市| 永清县| 四川省| 青铜峡市| 临澧县| 安泽县| 西华县| 丰镇市| 天柱县| 彩票| 太仆寺旗| 新蔡县| 南澳县| 德昌县| 民和| 濮阳县| 泽普县| 金塔县| 恭城| 新营市| 观塘区| 犍为县| 光山县| 兴业县| 亳州市| 安泽县| 盐源县| 衡水市| 洛扎县| 长汀县|