最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

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

REST 通過(guò) URI 暴露資源時(shí),會(huì)強(qiáng)調(diào)不要在 URI 中出現(xiàn)動(dòng)詞。比如:

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

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

GET : 獲取、讀取資源

POST : 添加資源

PUT : 修改資源

DELETE : 刪除資源

實(shí)際上,這四個(gè)動(dòng)詞實(shí)際上就對(duì)應(yīng)著增刪改查四個(gè)操作,這就利用了HTTP動(dòng)詞來(lái)表示對(duì)資源的操作。

2.3. HTTP狀態(tài)碼

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

200 OK 
400 Bad Request 
500 Internal Server Error

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

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

這三種狀態(tài)與上面的狀態(tài)碼是一一對(duì)應(yīng)的。如果你覺(jué)得這三種狀態(tài),分類處理結(jié)果太寬泛,http-status code還有很多。建議還是要遵循KISS(Keep It Stupid and Simple)原則,上面的三種狀態(tài)碼完全可以覆蓋99%以上的場(chǎng)景。這三個(gè)狀態(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)系的表達(dá)

GET /cars/711/drivers/ 返回 使用過(guò)編號(hào)711汽車的所有司機(jī)

GET /cars/711/drivers/4 返回 使用過(guò)編號(hào)711汽車的4號(hào)司機(jī)

2.7. 高級(jí)用法: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ā)出請(qǐng)求,會(huì)得到這樣一個(gè)文檔。

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

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

2.8. 資源過(guò)濾、排序、選擇和分頁(yè)的表述

2.9. 版本化你的API

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

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

參考:

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

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

相關(guān)文章

  • Spring中@RefreshScope注解的處理方法詳解

    Spring中@RefreshScope注解的處理方法詳解

    這篇文章主要介紹了Spring中@RefreshScope注解的處理方法詳解,spring啟動(dòng)時(shí)會(huì)調(diào)用ClassPathBeanDefinitionScanner.java類中的doScan()對(duì)包路徑下的所有class進(jìn)行掃描,獲取bean的定義,同時(shí)對(duì)bean的@RefreshScope(@Scope的父類)進(jìn)行處理,需要的朋友可以參考下
    2023-10-10
  • maven私服的配置使用方法

    maven私服的配置使用方法

    這篇文章主要介紹了maven私服的配置使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析

    Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析

    這篇文章主要介紹了Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析的相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 解析Java的Hibernate框架中的持久化類和映射文件

    解析Java的Hibernate框架中的持久化類和映射文件

    這篇文章主要介紹了Java的Hibernate框架中的持久化類和映射文件,Hibernate是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Jmeter解析返回參數(shù)以及解析并操作json方式

    Jmeter解析返回參數(shù)以及解析并操作json方式

    本文總結(jié)了Java或JMeter的BeanShell腳本中處理JSON字符串的常用操作,包括解析JSON數(shù)組、JSON對(duì)象和嵌套的JSON字符串,并提供了示例代碼和打印結(jié)果
    2025-02-02
  • Spring spel表達(dá)式使用方法示例

    Spring spel表達(dá)式使用方法示例

    這篇文章主要介紹了Spring spel表達(dá)式使用方法示例,通過(guò)一些實(shí)例向大家展示了spel表達(dá)式的用法,需要的朋友可以了解下。
    2017-09-09
  • Java線程在什么情況下可以終止

    Java線程在什么情況下可以終止

    Thread線程類自帶的stop方法,但是jdk不建議使用,因?yàn)閟top方法終止線程只是強(qiáng)行終止,內(nèi)存中部分值可能已發(fā)生變化,并未保證數(shù)據(jù)的一致性,將會(huì)導(dǎo)致線程安全問(wèn)題,那么在什么情況下可以終止線程呢,本篇帶你探究一下
    2022-04-04
  • SpringBoot的配置文件application.yml及加載順序詳解

    SpringBoot的配置文件application.yml及加載順序詳解

    這篇文章主要介紹了SpringBoot的配置文件application.yml及加載順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增刪改查分頁(yè))

    SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增刪改查分頁(yè))

    這篇文章主要給大家介紹了關(guān)于SpringMVC4 + MyBatis3 + SQL Server 2014整合的相關(guān)資料,文中包括介紹了增刪改查分頁(yè)等相關(guān)內(nèi)容,通過(guò)示例代碼介紹的非常詳細(xì),分享出來(lái)供大家參考學(xué)習(xí),下面來(lái)一起看看吧。
    2017-06-06
  • springboot中使用redis并且執(zhí)行調(diào)試lua腳本

    springboot中使用redis并且執(zhí)行調(diào)試lua腳本

    今天有個(gè)項(xiàng)目需要使用redis,并且有使用腳本的需求,本文主要介紹了springboot中使用redis并且執(zhí)行調(diào)試lua腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評(píng)論

康定县| 德阳市| 延寿县| 莎车县| 水城县| 呼伦贝尔市| 花莲市| 贵州省| 邮箱| 石家庄市| 岐山县| 澜沧| 兰西县| 灵武市| 安达市| 宁乡县| 色达县| 碌曲县| 万宁市| 友谊县| 八宿县| 河西区| 宁武县| 临泉县| 安龙县| 江安县| 左贡县| 六枝特区| 巴彦淖尔市| 五大连池市| 北川| 安宁市| 奉节县| 盐津县| 孝感市| 嘉峪关市| 水城县| 高青县| 张家界市| 阳信县| 河曲县|