鍍金池/ 教程/ Java/ RESTful Web 服務(wù) - 無狀態(tài)
RESTful Web 服務(wù) - 環(huán)境設(shè)置
RESTful Web 服務(wù) - 資源
RESTful Web 服務(wù) - 第一個應(yīng)用
RESTful Web 服務(wù) - 緩存
RESTful Web 服務(wù) - 方法
RESTful Web 服務(wù) - 安全性
RESTful Web 服務(wù) - 尋址
RESTful Web 服務(wù) - 無狀態(tài)
RESTful Web 服務(wù) - Java (JAX-RS)
RESTful Web 服務(wù) - 介紹
RESTful Web 服務(wù) - 消息

RESTful Web 服務(wù) - 無狀態(tài)

根據(jù) REST 架構(gòu),一個 RESTful Web 服務(wù)不應(yīng)該在服務(wù)器上保持客戶端狀態(tài)。這種約束被稱為無狀態(tài)??蛻舳说穆氊熓莻鬟f其上下文給服務(wù)器,然后服務(wù)器存儲這個上下文以處理客戶端的請求。比如,由服務(wù)器維護的會話是通過客戶端傳遞的會話標示符識別的。

RESTful Web 服務(wù)應(yīng)該遵守這一約束。我們已經(jīng)在 RESTful Web 服務(wù) - 方法 教程中見過,Web 服務(wù)方法不會存儲調(diào)用它們的客戶端的任意信息。

考慮如下 URI:

http://localhost:8080/UserManagement/rest/UserService/users/1

如果我們使用瀏覽器,使用基于 Java 的客戶端或者使用 postman 訪問上面的 url,結(jié)果始終是 User XML 并且它的 ID 為 1,因此服務(wù)器并沒有存儲客戶端相關(guān)的任意信息。

<user>
<id>1</id>
<name>mahesh</name>
<profession>1</profession>
</user>

無狀態(tài)的優(yōu)勢

下面是 RESTful Web 服務(wù)中無狀態(tài)的好處:

  • Web 服務(wù)可以獨立對待每個請求方法。
  • Web 服務(wù)不需要維護客戶端先前的交互。簡化了應(yīng)用程序設(shè)計。
  • HTTP 本身是一個無狀態(tài)協(xié)議,RESTful Web 服務(wù)可與 HTTP 協(xié)議無縫協(xié)作。

無狀態(tài)的缺點

下面是 RESTful Web 服務(wù)中無狀態(tài)的缺點:

  • Web 服務(wù)需要在每個請求中獲取額外的信息,然后在客戶端交互需要處理的情況下解讀客戶端狀態(tài)。