亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring?Boot開發(fā)RESTful接口與http協(xié)議狀態(tài)表述

 更新時間:2022年03月17日 17:00:33   作者:字母哥博客  
這篇文章主要為大家介紹了Spring?Boot開發(fā)RESTful接口與http協(xié)議狀態(tài)表述,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

一、RESTful風(fēng)格API的好處

API(Application Programming Interface),顧名思義:是一組編程接口規(guī)范,客戶端與服務(wù)端通過請求響應(yīng)進行數(shù)據(jù)通信。REST(Representational State Transfer)表述性狀態(tài)傳遞,決定了接口的形式與規(guī)則。RESTful是基于http方法的API設(shè)計風(fēng)格,而不是一種新的技術(shù).

  • 看Url就知道要什么資源
  • 看http method就知道針對資源干什么
  • 看http status code就知道結(jié)果如何

對接口開發(fā)提供了一種可以廣泛適用的規(guī)范,為前端后端交互減少了接口交流的口舌成本,是約定大于配置的體現(xiàn)。通過下面的設(shè)計,大家來理解一下這三句話。

當(dāng)然也不是所有的接口,都能用REST的形式來表述。在實際工作中,靈活運用,我們用RESTful風(fēng)格的目的是為大家提供統(tǒng)一標(biāo)準(zhǔn),避免不必要的溝通成本的浪費,形成一種通用的風(fēng)格。就好比大家都知道:伸出大拇指表示“你很棒“的意思,絕大部分人都明白,因為你了解了這種風(fēng)格習(xí)慣。但是不排除有些地區(qū)伸出大拇指表示其他意思,就不適合使用!

二、RESTful API的設(shè)計風(fēng)格

2.1、RESTful是面向資源的(名詞)

REST 通過 URI 暴露資源時,會強調(diào)不要在 URI 中出現(xiàn)動詞。比如:

不符合REST的接口URI符合REST接口URI功能
GET /api/getDogs/{id}GET /api/dogs/{id}獲取一個小狗狗
GET /api/getDogsGET /api/dogs獲取所有小狗狗
GET /api/addDogsPOST /api/dogs添加一個小狗狗
GET /api/editDogs/{id}PUT /api/dogs/{id}修改一個小狗狗
GET /api/deleteDogs/{id}DELETE /api/dogs/{id}刪除一個小狗狗

2.2、用HTTP方法體現(xiàn)對資源的操作(動詞)

GET : 獲取、讀取資源

POST : 添加資源

PUT : 修改資源

DELETE : 刪除資源

實際上,這四個動詞實際上就對應(yīng)著增刪改查四個操作,這就利用了HTTP動詞來表示對資源的操作。

2.3. HTTP狀態(tài)碼

通過HTTP狀態(tài)碼體現(xiàn)動作的結(jié)果,不要自定義

200 OK 
400 Bad Request 
500 Internal Server Error

在 APP 與 API 的交互當(dāng)中,其結(jié)果逃不出這三種狀態(tài):

  • 所有事情都按預(yù)期正確執(zhí)行完畢 - 成功
  • APP 發(fā)生了一些錯誤 – 客戶端錯誤(如:校驗用戶輸入身份證,結(jié)果輸入的是軍官證,就是客戶端輸入錯誤)
  • API 發(fā)生了一些錯誤 – 服務(wù)器端錯誤(各種編碼bug或服務(wù)內(nèi)部自己導(dǎo)致的異常)

這三種狀態(tài)與上面的狀態(tài)碼是一一對應(yīng)的。如果你覺得這三種狀態(tài),分類處理結(jié)果太寬泛,http-status code還有很多。建議還是要遵循KISS(Keep It Stupid and Simple)原則,上面的三種狀態(tài)碼完全可以覆蓋99%以上的場景。這三個狀態(tài)碼大家都記得住,而且非常常用,多了就不一定了。

2.4. Get方法和查詢參數(shù)不應(yīng)該改變數(shù)據(jù)

改變數(shù)據(jù)的事交給POST、PUT、DELETE

2.5. 使用復(fù)數(shù)名詞

/dogs 而不是 /dog

2.6. 復(fù)雜資源關(guān)系的表達

GET /cars/711/drivers/ 返回 使用過編號711汽車的所有司機

GET /cars/711/drivers/4 返回 使用過編號711汽車的4號司機

2.7. 高級用法:HATEOAS

HATEOAS:Hypermedia as the Engine of Application State 超媒體作為應(yīng)用狀態(tài)的引擎。
RESTful API最好做到HATEOAS,即返回結(jié)果中提供鏈接,連向其他API方法,使得用戶不查文檔,也知道下一步應(yīng)該做什么。比如,當(dāng)用戶向api.example.com的根目錄發(fā)出請求,會得到這樣一個文檔。

{"link": {
  "rel":   "collection https://www.example.com/zoos",
  "href":  "https://api.example.com/zoos",
  "title": "List of zoos",
  "type":  "application/vnd.yourformat+json"
}}

上面代碼表示,文檔中有一個link屬性,用戶讀取這個屬性就知道下一步該調(diào)用什么API或者可以調(diào)用什么API了。

2.8. 資源過濾、排序、選擇和分頁的表述

2.9. 版本化你的API

強制性增加API版本聲明,不要發(fā)布無版本的API。如:/api/v1/blog

面向擴展開放,面向修改關(guān)閉:也就是說一個版本的接口開發(fā)完成測試上線之后,我們一般不會對接口進行修改,如果有新的需求就開發(fā)新的接口進行功能擴展。這樣做的目的是:當(dāng)你的新接口上線后,不會影響使用老接口的用戶。如果新接口目的是替換老接口,也不要在v1版本原接口上修改,而是開發(fā)v2版本接口,并聲明v1接口廢棄!

參考:

關(guān)于HTTP RESTful風(fēng)格API設(shè)計的更多例子,請大家參考:http://httpbin.org/

以上就是Spring Boot開發(fā)RESTful接口與http協(xié)議狀態(tài)表述的詳細(xì)內(nèi)容,更多關(guān)于Spring Boot開發(fā)RESTful接口http狀態(tài)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker使用 Maven 插件構(gòu)建鏡像的方法

    Docker使用 Maven 插件構(gòu)建鏡像的方法

    本篇文章主要介紹了Docker使用 Maven 插件構(gòu)建鏡像的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • MyBatis insert操作插入數(shù)據(jù)之后返回插入記錄的id

    MyBatis insert操作插入數(shù)據(jù)之后返回插入記錄的id

    今天小編就為大家分享一篇關(guān)于MyBatis插入數(shù)據(jù)之后返回插入記錄的id,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Spring Cloud學(xué)習(xí)教程之Zuul統(tǒng)一異常處理與回退

    Spring Cloud學(xué)習(xí)教程之Zuul統(tǒng)一異常處理與回退

    Spring Cloud Zuul對異常的處理整體來說還是比較方便的,流程也比較清晰,下面這篇文章主要給大家介紹了關(guān)于Spring Cloud學(xué)習(xí)教程之Zuul統(tǒng)一異常處理與回退的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • JAVA中哈希表HashMap的深入學(xué)習(xí)

    JAVA中哈希表HashMap的深入學(xué)習(xí)

    這篇文章主要介紹了哈希表HashMap的深入學(xué)習(xí),哈希表是一種非常重要的數(shù)據(jù)結(jié)構(gòu),許多緩存技術(shù)(比如memcached)的核心其實就是在內(nèi)存中維護一張大的哈希表,本文會對java集合框架中HashMap的實現(xiàn)原理進行講解。感興趣的話可以一起來學(xué)習(xí)
    2020-07-07
  • SpringBoot利用validation實現(xiàn)優(yōu)雅的校驗參數(shù)

    SpringBoot利用validation實現(xiàn)優(yōu)雅的校驗參數(shù)

    數(shù)據(jù)的校驗是交互式網(wǎng)站一個不可或缺的功能,如果數(shù)據(jù)庫中出現(xiàn)一個非法的郵箱格式,會讓運維人員頭疼不已。本文將介紹如何利用validation來對數(shù)據(jù)進行校驗,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-06-06
  • spring中12種@Transactional的失效場景(小結(jié))

    spring中12種@Transactional的失效場景(小結(jié))

    日常我們進行業(yè)務(wù)開發(fā)時,基本上使用的都是聲明式事務(wù),即為使用@Transactional注解的方式,本文主要介紹了spring中12種@Transactional的失效場景,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java如何連續(xù)執(zhí)行多條cmd命令

    java如何連續(xù)執(zhí)行多條cmd命令

    這篇文章主要介紹了java如何連續(xù)執(zhí)行多條cmd命令的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Eclipse新建項目不可選擇Java Project問題解決方案

    Eclipse新建項目不可選擇Java Project問題解決方案

    這篇文章主要介紹了Eclipse新建項目不可選擇Java Project問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • springboot 集成支付寶支付的示例代碼

    springboot 集成支付寶支付的示例代碼

    這篇文章主要介紹了springboot 集成支付寶支付的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Springmvc ajax跨域請求處理方法實例詳解

    Springmvc ajax跨域請求處理方法實例詳解

    這篇文章主要介紹了Springmvc ajax跨域請求處理方法實例詳解,需要的朋友可以參考下
    2017-10-10

最新評論