如何設計乙個優雅的RESTFUL的介面

2021-10-02 13:10:13 字數 2235 閱讀 1930

設計介面是我們開發人員的日常操作。當我們把接**給前端人員時,是否有種拔劍出鞘的錯覺。畢竟交付介面,我們的開發工作就階段性完成了。不過,如果我們沒有乙個介面設計規範的時候,結果會怎樣呢?我們來張圖感受一下。

2023年,乙個年輕小夥子(roy thomas fielding)在他的博士**提出了 rest。rest 是一種全球資訊網軟體架構風格。為什麼說是風格不是標準呢?個人理解可能說標準就有點過分了。小夥子做不到。隨後這種風格被推廣開來,漂洋過海,被大眾熟知。在 rest 的基礎上,產生了 restful 。什麼是 restful?簡單的說,符合 rest 風格的介面就是 restful。

介面各種各樣。正如一千個人眼裡有一千個魯迅。restful 介面究竟長什麼樣子呢?

http 裡面有幾個基本的方法。我們利用這些約定一些規範。

方法作用

get獲取資料

post

插入資料

put更新資料

delect

刪除資料

從表中,如果我們可以清楚看到當我們的介面是關於獲取資料,那麼我們使用 get 方法。

如果我們可以清楚看到當我們的介面是關於插入資料,那麼我們使用 post 方法。

如果我們可以清楚看到當我們的介面是關於更新資料,那麼我們使用 put 方法。

如果我們可以清楚看到當我們的介面是關於刪除資料,那麼我們使用 delect 方法。

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

我們看看線上**的介面是怎麼樣的。

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

我們發現他的介面都是名詞。所以我們知道 restful 介面使用的是名詞。比如我們設計乙個獲取資料的介面,我們可這樣設計

/v1/list
上面介面是獲取所有資料。

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

/v1/list/1
上面介面表示獲取是列表的1號資料,我們可以獲取2號、3號資料等等,只要改變量字即可。

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

介面方法

作用/v1/list

get獲取列表

/v1/list

post

增加列表

/v1/list

put更新列表

/v1/list

delect

刪除列表

以下是原始碼的demo

import lombok.extern.slf4j.slf4j;

import org.springframework.web.bind.annotation.pathvariable;

import org.springframework.web.bind.annotation.requestmethod;

import org.springframework.web.bind.annotation.restcontroller;

@restcontroller

@slf4j

public static void main(string args)

/*** 得到所有列表

* @return

*/public string getlist()

/*** 得到列表中的一條

* @param name

* @return

*/public string getlistone(@pathvariable("name") string name)

/*** 往列表中的增加一條資料

* @return

*/public string addlist()

/*** 更新列表中的一條資料

* @return

*/public string updatelistone(@pathvariable("name") string name)

/*** 刪除所有列表

* @return

*/public string dellist()

}

JPA之如何設計乙個優雅的DAO

要想使寫的 具有可復用 可維護 易擴充套件,我們就要面向介面程式設計。添刪改查,每增加乙個模組都要做添刪改查,重複 之多可想而知,不便於維護,雖然我們使用了持久層框架jpa,但也避免不了重複的 如何才能使重複的 更少些呢?採用泛型 反射技術。首先我們定義乙個介面 public inte ce dao...

如何優雅關閉乙個執行緒

當我們去thread類裡面找相關的介面時,發現有 個stop方法,看上去非常適合用來終止乙個執行緒,但是這個方法上面標了個 deprecated註解,非常明顯,這是乙個廢棄方法,不建議使用它。主要有兩個方面的原因 因為這個方法會將執行緒直接殺掉,沒有任何喘息機會,一旦執行緒被殺死,後面的 邏輯就再也...

如何優雅的生成乙個 diff patch

某天如果你要把一條 git 或 svn 記錄的修改傳送給其他人時我們要怎麼做呢?在 git 下你可以這麼做 git format patch commit sha1 id 1這樣會生成單條記錄的 patch 檔案,當然也可以生成多條或者兩條 commit 記錄之間的修改。例如我們在開源專案 nukl...