日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Java开发RESTful(三)RESTful设计

發(fā)布時間:2023/12/1 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 Java开发RESTful(三)RESTful设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【原創(chuàng)文章,轉(zhuǎn)載請注明原文章地址,謝謝!】

摘要,本文主要是簡單討論RESTful的相關(guān)設(shè)計問題,包括資源設(shè)計,動作設(shè)計和響應(yīng)設(shè)計。

資源設(shè)計

在本系列第一篇文章中已經(jīng)通過一個優(yōu)惠券的例子給大家簡單闡述了一下資源的設(shè)計,包括二級資源的設(shè)計。下面我們來看下詳細的資源設(shè)計方案:
前面我們已經(jīng)了解到,在RESTful架構(gòu)中,每個網(wǎng)址代表一種資源(resource),所以網(wǎng)址中不能有動詞,只能有名詞,而且所用的名詞往往與數(shù)據(jù)庫的表格名對應(yīng)。一般來說,數(shù)據(jù)庫中的表都是同種記錄的”集合”(collection),所以API中的名詞也應(yīng)該使用復(fù)數(shù)。
例如,針對一個動物園應(yīng)用,可能涉及到的資源就應(yīng)該有:
https://api.example.com/v1/zoos:動物園資源
https://api.example.com/v1/animals:動物資源
https://api.example.com/v1/employees:飼養(yǎng)員資源
注意設(shè)計的方案,最后一個單詞都是名詞并且都是復(fù)數(shù)。對于簡單的應(yīng)用來說,一般一個資源就對應(yīng)一個表,這樣的設(shè)計已經(jīng)足夠。但是更多的情況,面對復(fù)雜的應(yīng)用,因為HTTP提供的接口是有限的(HTTP一共就提供了常用的5種請求方式,所以能表示的對一個資源的操作是有限的)怎么抽取出合適的資源,也是一個相對來說比較困難的事情。這個在我們后面的實戰(zhàn)示例中會提到。

動作設(shè)計

先來看看REST中針對HTTP常用動作的一些固定的含義:

  • GET(SELECT):表示從服務(wù)器取出資源(一項或多項)。
  • POST(CREATE):表示在服務(wù)器新建一個資源。
  • PUT(UPDATE):表示在服務(wù)器更新資源(客戶端需要提供改變后的完整資源)。
  • PATCH(UPDATE):表示在服務(wù)器更新資源(客戶端需要提供改變的屬性【可以簡單理解為補丁】)。
  • DELETE(DELETE):表示從服務(wù)器刪除資源。

以上五個是最常用的請求方式;另外還有兩個:

  • HEAD:獲得一個資源的元數(shù)據(jù),比如一個資源的hash值或者最后修改日期;
  • OPTIONS:獲得客戶針對一個資源能夠?qū)嵤┑牟僮?#xff1b;這個主要是作為Hypermedia 存在(在最佳實踐中介紹)

下面列幾個簡單的動作示例,示例格式 HTTP動作 URL:說明

  • GET /zoos:列出所有動物園
  • POST /zoos:新建一個動物園
  • GET /zoos/ID:獲取某個指定動物園的信息(ID即指定動物園id)
  • PUT /zoos/ID:更新某個指定動物園的信息(瀏覽器端需要提供該動物園的全部信息)
  • PATCH /zoos/ID:更新某個指定動物園的信息(瀏覽器端需要提供該動物園的部分信息)
  • DELETE /zoos/ID:刪除某個動物園
  • GET /zoos/ID/animals:列出某個指定動物園的所有動物(animals為二級資源路徑)
  • DELETE /zoos/ID/animals/ID:刪除某個指定動物園的指定動物animals為二級資源路徑,前面一個id是指定動物園id,后面一個id是指定動物id)

返回結(jié)果

返回結(jié)果也是HTTP協(xié)議中非常重要的組成部分,客戶端完全通過返回結(jié)果來斷定請求的結(jié)果,包括異常等。

返回值類型

即針對不同的請求方式,應(yīng)該返回什么標(biāo)準(zhǔn)的內(nèi)容。但是注意,具體返回什么樣式的內(nèi)容,是通過頭信息來規(guī)定的。下面直接使用一些案例來說明:

  • GET /collection:規(guī)定返回資源對象的列表(數(shù)組)
  • GET /collection/resource:規(guī)定返回單個資源對象
  • POST /collection:規(guī)定返回新生成的資源對象
  • PUT /collection/resource:規(guī)定返回完整的資源對象
  • PATCH /collection/resource:規(guī)定返回完整的資源對象
  • DELETE /collection/resource:規(guī)定返回一個空文檔

Content Type

一個API可以允許返回JSON,XML甚至HTML等文檔格式;具體的文檔格式由頭信息規(guī)定。而頭信息來源于兩點,一個是請求頭中的Accept Type,表示客戶端需要請求的表現(xiàn)層數(shù)據(jù)格式。一個是響應(yīng)頭中的Content Type,表示本次請求服務(wù)器端返回的數(shù)據(jù)格式。

另外,完全也可以通過URI后綴來表示請求格式,比如GET /animals.json用來表示請求json格式的動物列表數(shù)據(jù),使用GET /animals.xml來表示請求XML格式的動物列表數(shù)據(jù),但是更建議使用請求頭來表示,不要把數(shù)據(jù)類型和資源混淆。

返回狀態(tài)碼

返回狀態(tài)碼在HTTP/1.1協(xié)議中是一個非常重要的概念。表示了本次請求的一個最終的效果,也是客戶端判定本次請求結(jié)果的第一個入口。返回狀態(tài)碼非常多,下面簡單列舉了常用的返回狀態(tài)碼說明(格式:狀態(tài)碼 狀態(tài)碼說明 適合的請求類型:解釋):

  • 200 OK - [GET]:服務(wù)器成功返回用戶請求的數(shù)據(jù)。
  • 201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數(shù)據(jù)成功(但是大部分情況下,使用200也是可以的)。
  • 202 Accepted - [*]:表示一個請求已經(jīng)進入后臺排隊(針對異步請求,或者后臺服務(wù)需要一定處理時間的請求)
  • 204 NO CONTENT - [DELETE]:用戶刪除數(shù)據(jù)成功(但是大部分情況下,使用200也是可以的)。
  • 400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發(fā)出的請求有錯誤,服務(wù)器沒有進行新建或修改數(shù)據(jù)的操作,該操作是冪等(冪等的意思是針對一個數(shù)據(jù),多次實施相同的操作效果是一致的。比如多次刪除一條數(shù)據(jù),最后的效果是一樣的,即這條數(shù)據(jù)被刪除,那么刪除操作是冪等的,而對于++運算符,每次操作的結(jié)果都是在上一次數(shù)據(jù)值上面加1,所以++操作不是冪等的)的。
  • 401 Unauthorized - [*]:表示用戶沒有權(quán)限(令牌、用戶名、密碼錯誤)。
  • 403 Forbidden - [*] 表示用戶得到授權(quán)(與401錯誤相對),但是訪問是被禁止的。
  • 404 NOT FOUND - [*]:用戶發(fā)出的請求針對的是不存在的記錄,服務(wù)器沒有進行操作,該操作是冪等的。
  • 406 Not Acceptable - [GET]:用戶請求的格式不可得(比如用戶請求JSON格式,但是只有XML格式)。
  • 410 Gone -[GET]:用戶請求的資源被永久刪除,且不會再得到的。
  • 422 Unprocesable entity - [POST/PUT/PATCH] 當(dāng)創(chuàng)建一個對象時,發(fā)生一個驗證錯誤。
  • 500 INTERNAL SERVER ERROR - [*]:服務(wù)器發(fā)生錯誤,用戶將無法判斷發(fā)出的請求是否成功。

小結(jié)

在本節(jié)中,主要針對RESTful的常見的設(shè)計做出了一些解釋,到此,關(guān)于RESTful的基本概念介紹完畢,要真正的去理解和體會RESTful的好處,還需要在實際的開發(fā)中慢慢看。從下一篇文章開始,進入RESTful的開發(fā)基礎(chǔ)介紹。

總結(jié)

以上是生活随笔為你收集整理的Java开发RESTful(三)RESTful设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 丰满尤物白嫩啪啪少妇 | 国产一级视频在线 | 欧美中文字幕一区二区三区 | 成人免费黄色 | 极品少妇xxxx | 窝窝视频在线 | 综合成人 | 毛片毛片毛片毛片毛片毛片毛片 | 福利视频免费观看 | 国产精品videossex国产高清 | 日本在线免费观看视频 | 欧美视频一区二区三区四区在线观看 | 日韩一区二区视频在线 | 国产一级免费 | 自拍偷拍欧美日韩 | 亚洲码在线观看 | 伊人快播 | 在线免费精品 | 日韩电影福利 | 精品动漫3d一区二区三区免费版 | 午夜免费看 | www.夜夜爽 | 99热官网| 一本久久a精品一合区久久久 | 国产一区二区片 | 思思久久99 | 黄色一级片欧美 | 末发成年娇小性xxxxx | 精品一区av | 日韩激情av| 日本理论片中文字幕 | 中文字幕在线视频观看 | 久一精品 | 欧美日韩在线视频免费播放 | 欧美日韩一区二区在线观看视频 | 中文字幕成人av | 黄色同人网站 | 亚洲成av人片在线观看无 | 色av中文字幕 | 黄色片网站免费观看 | 日本特级黄色录像 | 黄色av一区二区 | 色欲国产精品一区二区 | 国产视频综合在线 | 成人免费视频久久 | 色啪综合| 国产欧美一区二区三区在线 | 99精品自拍| 国产成人综合欧美精品久久 | 少妇无套高潮一二三区 | 亚洲先锋影音 | 免费一级suv好看的国产网站 | 男人天堂网在线观看 | 亚洲欧美另类一区 | 97免费超碰| 国产一区二区三区视频在线 | 亚洲成人自拍偷拍 | 一区二区日韩视频 | 日韩视频免费在线播放 | 久久精品欧美日韩 | 香蕉中文网 | 久青草视频 | 日皮视频在线观看 | 91微拍 | 欧美一区二区三区成人久久片 | 成色视频| 亚洲精品20p| 国产大片中文字幕 | 亚洲色图欧美另类 | 国产婷婷综合 | 一区二区三区成人 | 国产中文字幕在线播放 | 狠狠干天天干 | 艹男人的日日夜夜 | 一区二区三区高清在线 | 日韩欧美aⅴ综合网站发布 国产成人一区二区三区小说 | 91精品国产综合久久福利 | 6080黄色 | 欧美69av| 日韩av看片 | 亚洲热影院 | 国产淫语对白 | 亚洲精品一级二级 | 日日嗨av一区二区三区四区 | 一级二级三级黄色片 | 日本理伦片午夜理伦片 | 亚洲高清av在线 | 欧美特级黄色录像 | www日本在线 | 俺去俺来也在线www色官网 | 熟女俱乐部五十路六十路av | 99久久人妻无码精品系列 | 日日色av| 七七久久| 精品爆乳一区二区三区无码av | 日本高清久久 | 久久久国产网站 | 日韩aⅴ片 | 日本色妞 |