大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 什么是rest風格

什么是rest風格

更新時間:2022-08-10 11:05:27 來源:動力節點 瀏覽1549次

什么是 REST?

了解如何使用 REST 范例設計 Web 服務

代表性狀態轉移

REST 或 REpresentational State Transfer 是一種架構風格,用于在 Web 上的計算機系統之間提供標準,使系統之間更容易相互通信。符合 REST 的系統,通常稱為 RESTful 系統,其特點是它們是無狀態的,并且將客戶端和服務器的關注點分開。我們將深入探討這些術語的含義以及為什么它們是 Web 服務的有益特征。

客戶端和服務器分離

在 REST 架構風格中,客戶端的實現和服務器的實現可以獨立完成,彼此不知道對方。這意味著客戶端的代碼可以隨時更改而不影響服務器的運行,而服務器端的代碼可以更改而不影響客戶端的運行。

只要雙方都知道要發送給對方的消息格式,它們就可以保持模塊化和分離。將用戶界面關注點與數據存儲關注點分開,我們提高了跨平臺界面的靈活性,并通過簡化服務器組件來提高可擴展性。此外,分離允許每個組件獨立發展的能力。

通過使用 REST 接口規范,不同的客戶端訪問相同的 REST 端點、執行相同的操作并接收相同的響應。

無國籍狀態

遵循 REST 范式的系統是無狀態的,這意味著服務器不需要知道客戶端處于什么狀態,反之亦然。這樣,服務器和客戶端都可以理解收到的任何消息,即使沒有看到以前的消息。這種無狀態約束是通過使用資源而不是命令來實現的。資源是 Web 的名詞——它們描述 了您可能需要存儲或發送到其他服務的任何對象、文檔或事物。

因為 REST 系統通過對資源的標準操作進行交互,所以它們不依賴于接口的實現。

這些約束有助于 RESTful 應用程序實現可靠性、快速性能和可擴展性,作為可以在不影響整個系統的情況下進行管理、更新和重用的組件,即使在系統運行期間也是如此。

現在,我們將探討在實現 RESTful 接口時客戶端和服務器之間的通信是如何實際發生的。

客戶端和服務器之間的通信

在 REST 架構中,客戶端發送請求以檢索或修改資源,服務器發送對這些請求的響應。讓我們看一下發出請求和發送響應的標準方法。

發出請求

REST 要求客戶端向服務器發出請求,以便檢索或修改服務器上的數據。請求通常包括:

一個 HTTP 動詞,它定義了要執行的操作類型

一個標頭,允許客戶端傳遞有關請求的信息

資源路徑

包含數據的可選消息正文

HTTP 動詞

我們在請求中使用 4 個基本的 HTTP 動詞來與 REST 系統中的資源進行交互:

GET — 檢索特定資源(通過 id)或資源集合

POST — 創建一個新資源

PUT — 更新特定資源(按 id)

DELETE — 按 id 刪除特定資源

標頭和接受參數

在請求的標頭中,客戶端發送它能夠從服務器接收的內容類型。這稱為Accept字段,它確保服務器不會發送客戶端無法理解或處理的數據

MIME 類型,用于指定Accept字段中的內容類型,由 atype和 a組成subtype。它們由斜線 (/) 分隔。

例如,包含 HTML 的文本文件將被指定為 type text/html。如果此文本文件包含 CSS,則將其指定為text/css. 通用文本文件將表示為text/plain. 但是,此默認值text/plain不是萬能的。如果客戶端期待text/css并接收text/plain,它將無法識別內容。

其他類型和常用的亞型:

image— image/png, image/jpeg,image/gif

audio — audio/wav,audio/mpeg

video— video/mp4,video/ogg

application — application/json, application/pdf, application/xml,application/octet-stream

例如,客戶端訪問服務器上資源中具有id23 的articles資源可能會發送如下 GET 請求:

GET /articles/23

Accept: text/html, application/xhtml

在這種情況下,Accept標頭字段表示客戶端將接受text/htmlor中的內容application/xhtml。

路徑

請求必須包含指向應該對其執行操作的資源的路徑。在 RESTful API 中,應該設計路徑以幫助客戶端了解正在發生的事情。

按照慣例,路徑的第一部分應該是資源的復數形式。這使嵌套路徑易于閱讀和理解。

fashionboutique.com/customers/223/orders/12即使您以前從未見過此特定路徑,類似路徑的指向也很清楚,因為它是分層的和描述性的。我們可以看到,我們正在為223id的客戶訪問 12的訂單。id

路徑應包含定位具有所需特異性程度的資源所需的信息。在引用資源列表或資源集合時,并不總是需要添加id. 例如,對fashionboutique.com/customers路徑的 POST 請求不需要額外的標識符,因為服務器將為id新對象生成一個。

如果我們試圖訪問單個資源,我們需要id在路徑上附加一個。例如: GET fashionboutique.com/customers/:id— 檢索具有指定 的customers資源中的項目。— 刪除指定資源中的項目。idDELETE fashionboutique.com/customers/:idcustomersid

發送響應

內容類型

在服務器向客戶端發送數據有效負載的情況下,服務器必須content-type在響應的標頭中包含 a。此content-type標頭字段提醒客戶端它在響應正文中發送的數據類型。這些內容類型是 MIME 類型,就像它們在accept請求標頭的字段中一樣。服務器在響應中發回的content-type應該是客戶端在accept請求字段中指定的選項之一。

例如,當客戶端使用此 GET 請求訪問資源中的id23資源時:articles。

GET /articles/23 HTTP/1.1
Accept: text/html, application/xhtml

服務器可能會發送回帶有響應頭的內容:

HTTP/1.1 200 (OK)
Content-Type: text/html

這表示請求的內容在響應正文中以content-typeof形式返回text/html,客戶端表示它能夠接受。

響應代碼

來自服務器的響應包含狀態代碼以提醒客戶端有關操作成功的信息。作為開發人員,您不需要知道每個狀態碼(其中有很多),但您應該知道最常見的狀態碼以及它們的使用方式:

狀態碼 意義
200(好) 這是成功的 HTTP 請求的標準響應。
201(已創 建) 這是成功創建項目的 HTTP 請求的標準響應。
204(無內容) 這是成功 HTTP 請求的標準響應,響應正文中沒有返回任何內容。
400(錯誤請求) 由于請求語法錯誤、大小過大或其他客戶端錯誤,無法處理該請求。
403(禁止) 客戶端無權訪問此資源。
404(未找到) 此時找不到資源。它可能已被刪除,或者尚不存在。
500內部服務器錯誤) 如果沒有更具體的信息可用,則為意外失敗的通用答案。

對于每個 HTTP 動詞,服務器應在成功時返回預期的狀態代碼:

GET — 返回 200(確定)

POST — 返回 201(已創建)

PUT——返回 200(OK)

DELETE — 返回 204 (NO CONTENT) 如果操作失敗,返回與遇到的問題相對應的最具體的狀態碼。

請求和響應示例

假設我們有一個應用程序,允許您查看、創建、編輯和刪除托管在小型服裝店的客戶和訂單fashionboutique.com。我們可以創建一個允許客戶端執行這些功能的 HTTP API:

如果我們想查看所有客戶,請求將如下所示:

GET http://fashionboutique.com/customers
Accept: application/json

可能的響應標頭如下所示:

Status Code: 200 (OK)
Content-type: application/json

其次是格式customers要求的數據application/json。

通過發布數據創建新客戶:

POST http://fashionboutique.com/customers
Body:
{
  “customer”: {
    “name” = “Scylla Buss”,
    “email” = “scylla.buss@codecademy.org”
  }
}

然后,服務器id為該對象生成一個并將其返回給客戶端,其標頭如下:

201 (CREATED)
Content-type: application/json

要查看單個客戶,我們通過指定該客戶的 id 來獲取它:

GET http://fashionboutique.com/customers/123
Accept: application/json

可能的響應標頭如下所示:

Status Code: 200 (OK)
Content-type: application/json

后面是格式為23的customer資源數據。idapplication/json

我們可以通過PUT新數據更新該客戶:

PUT http://fashionboutique.com/customers/123
Body:
{
  “customer”: {
    “name” = “Scylla Buss”,
    “email” = “scyllabuss1@codecademy.com”
  }
}

可能的響應標頭將具有Status Code: 200 (OK), 以通知客戶端帶有id123 的項目已被修改。

我們還可以通過指定其刪除該客戶id:

DELETE http://fashionboutique.com/customers/123

響應將有一個包含 的標頭Status Code: 204 (NO CONTENT),通知客戶端帶有id123 的項目已被刪除,而正文中沒有任何內容。如果大家想了解更多相關知識,可以關注一下動力節點的Java在線學習,里面的課程內容從入門到精通,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲另类精品综合 | 在哪里可以看毛片 | 亚洲精品一区二区伦理 | 欧美人一级淫片a免费播放 欧美人与zoxxxx另类9 | 亚洲欧美日韩成人一区在线 | 在线成人精品国产区免费 | 目韩一区二区三区系列片丶 | 狠狠狠地在啪线香蕉 | 亚洲精品成人网久久久久久 | 99久久精品免费看国产免费 | 中国在线播放精品区 | 久久精品中文 | 2021国产精品久久 | 亚洲深夜在线 | 日日摸夜夜摸人人嗷嗷叫 | 伊人不卡久久大香线蕉综合影院 | 毛片a| 夜色资源在线观看免费 | 最新日本一级中文字幕 | 亚洲精品一区二区三区在线看 | 在线观看视频99 | 欧美色99| 91福利在线观看 | 久久精品国产99久久3d动漫 | 精品在线观看一区 | 老外黑人欧美一级毛片 | 精品国产免费久久久久久婷婷 | 九九精品热线免费观看6 | 欧洲亚洲精品 | 日韩毛片大全 | 亚洲精品久久久久综合91 | 国产欧美日韩亚洲 | 亚洲视频欧洲视频 | 亚洲欧美在线视频 | 欧美aⅴ | 成人a毛片视频免费看 | 四只虎免费永久观看地址 | 日韩欧美~中文字幕 | 日本不卡高清 | 狠狠的干狠狠的操 | 曰曰啪天天拍视频在线 |