這篇“restful接口規(guī)范與postman調(diào)試工具實例分析”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“restful接口規(guī)范與postman調(diào)試工具實例分析”文章吧。
創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站制作、網(wǎng)站設計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元桐廬做網(wǎng)站,已為上家服務,為桐廬各地企業(yè)和個人服務,聯(lián)系電話:13518219792
1.什么是RESTful?
REST:是web服務的一種架構風格;使用HTTP,URI,XML,JSON,HTML等廣泛流行的標準和協(xié)議;輕量級,跨平臺,跨語言的架構設計;它是一種設計風格,不是一種標準,是一種思想。
RESTful:對應的中文是rest式的;Restful web service是一種常見的rest的應用,是遵守了rest風格的web服務;rest式的web服務是一種ROA(The Resource-Oriented Architecture)(面向資源的架構)
RESTful的本質(zhì)是一種軟件構架風格,核心是面向資源,解決的問題:
降低開發(fā)的復雜性
提高系統(tǒng)的可伸縮性
2.SOAP和REST的區(qū)別:
SOAP (Simple Object Access Protocol):交換數(shù)據(jù)一種協(xié)議規(guī)范,是一種輕量的、簡單的、基于XML的協(xié)議。
REST (Representational State Transfer):一種軟件架構風格,可以降低開發(fā)的復雜性,提高系統(tǒng)的可伸縮性。
效率和易用性:
SOAP:由于各種需求不斷擴充其本身協(xié)議的內(nèi)容,導致在SOAP處理方面的性能有所下降。同時在易用性方面以及學習成本上也有所增加。
RESTful:由于其面向資源接口設計以及操作抽象簡化了開發(fā)者的不良設計,同時也最大限度的利用了Http最初的應用協(xié)議設計理念。
安全性:
RESTful對于資源型服務接口來說很合適,同時特別適合對于效率要求很高,但是對于安全要求不高的場景。
SOAP的成熟性可以給需要提供給多開發(fā)語言的,對于安全性要求較高的接口設計帶來便利。
總之:
安全性: SOAP會好于REST;
效率和易用性: REST更勝一籌;
成熟度:總的來說SOAP在成熟度上優(yōu)于REST。
3.如何設計RESTful API:
資源路徑:在RESTful架構中,每個網(wǎng)址代表一種資源,所以網(wǎng)址中不能有動詞,只能有名詞。一般來說API中的名詞應該使用復數(shù)。
HTTP動詞:對于資源的操作( CURD ) ,由HTTP動詞(謂詞)表示。
GET :從服務器取出資源(一項或多項)。
POST:在服務器新建一個資源。
PUT:在服務器更新資源(客戶端提供改變后的完整資源)。
DELETE :從服務器刪除資源。
我們以動物園(zoo)舉個例子(包括各種動物和雇員的信息):
https://api.example.com/v1/zoos //動物園資源 https://api.example.com/v1/animals //動物資源 https://api.example.com/v1/employees //雇員資源
POST /zoos :新建一個動物園
GET /zoos/ID :獲取某個指定動物園的信息
PUT /zoos/ID:更新某介指定動物園的信息
DELETE /zoos/D:刪除某個動物園
過濾信息:
?limit=10:指定返回記錄的數(shù)量
?offset=10:指定返回記錄的開始位置。
?page=2&per_page=100:指定第幾頁,以及每頁的記錄數(shù)。
?sortby=name&order=asc:指定返回結果按照哪個屬性排序,以及排序順序。
?animal_type_id=1:指定篩選條件
狀態(tài)碼:
200 (OK)-如果現(xiàn)有資源已被更改
201 ( created )-如果新資源被創(chuàng)建
202 ( accepted )-已接受處理請求但尚未完成(異步處理)
301 (Moved Permanently )-資源的URI被更新
303 ( See Other )-其他(如,負載均衡)
400 ( bad request )-指代壞請求
404 (not found )-資源不存在
406 (not acceptable )-服務端不支持所需表示
409 (conflict)-通用沖突
412 (Precondition Failed )-前置條件失敗(如執(zhí)行條件更新時的沖突)
415 (unsupported media type )-接受到的表示不受支持
500 (internal server error )-通用錯誤響應
503 (Service Unavailable )-服務當前無法處理請求
錯誤處理:
返回的信息中將error作為鍵名,出錯信息作為鍵值。
{ error: “Invalid API key” }
返回結果:
GET /collection:返回資源對象的列表(數(shù)組)
GET /collection/resource:返回單個資源對象
POST /collection:返回新生成的資源對象
PUT /collection/resource:返回完整的資源對象
PATCH /collection/resource:返回完整的資源對象
DELETE /collection/resource:返回一個空文檔
4.REST風格的接口測試流程:
我們直接用一張圖來介紹吧
5.代碼編寫和Postman測試:
工具:idea,MySQL數(shù)據(jù)庫,Postman
數(shù)據(jù)庫表數(shù)據(jù):
實體類:
@Data @ApiModel("用戶實體類") public class User extends Modelimplements Serializable { @ApiModelProperty("用戶id") @NotNull(message = "用戶id不能為空") private Integer id; @NotBlank(message = "用戶名不能為空") @ApiModelProperty("用戶名") private String name; @Min(1) @Max(100) @ApiModelProperty("用戶年齡") private Integer age; @NotEmpty(message = "郵箱不能為空") @ApiModelProperty("用戶郵箱") @Email private String email; @ApiModelProperty("0:未刪除 1:已刪除") @TableLogic private Integer deleted; @NotBlank(message = "密碼不能為空") @ApiModelProperty("用戶密碼") private String password; }
controller層的代碼(service層省略):
@Api(tags = "用戶管理") @RestController @RequestMapping("/MyWebsite/user") public class UserController { @Autowired private UserServiceImpl userServiceimpl; @ApiOperation(value = "新增用戶") @PostMapping public int insertUser(User user) { System.out.println("新增成功"); return userServiceimpl.insertUser(user); } @ApiOperation(value = "修改用戶信息") @PutMapping public void updateUser(@RequestBody @Valid User user) { userServiceimpl.updateUser(user); System.out.println("修改成功"); } @ApiOperation(value = "刪除用戶", notes = "根據(jù)id刪除用戶") @DeleteMapping("/{id}") public int deleteUser(@ApiParam("用戶id") @PathVariable @Valid Integer id) { System.out.println("刪除成功"); return userServiceimpl.deleteUser(id); } @ApiOperation(value = "查詢所有用戶") @GetMapping public ListallUser() { System.out.println("查詢成功"); return userServiceimpl.allUser(); } @ApiOperation(value = "id查詢用戶") @GetMapping("/{id}") public User selectById(@PathVariable("id") String id) { return userServiceimpl.selectById(id); } }
利用Postman測試(url路徑要對應上):
查詢所有用戶:http://localhost:8081/MyWebsite/user
Header:Content-Type=application/json
Body:空
查詢成功!
根據(jù)id查詢:
查詢成功!
新增用戶:
查看數(shù)據(jù)庫新增成功!
修改用戶信息(修改id為7的姓名和年齡):
查看數(shù)據(jù)庫修改成功!
根據(jù)id刪除用戶:
查看數(shù)據(jù)庫刪除成功!(deleted=1)
可能你的是直接刪除了整一條數(shù)據(jù)
當查詢或更新或刪除不存在的數(shù)據(jù)時(或者數(shù)據(jù)不合法),都是執(zhí)行失敗的
還有其他接口,例如刪除所有等接口,這里不一一測試了
以上就是關于“restful接口規(guī)范與postman調(diào)試工具實例分析”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關的知識內(nèi)容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。