更新時間:2022-06-06 09:24:39 來源:動力節(jié)點 瀏覽1341次
Java Rest是什么?動力節(jié)點小編來告訴大家。
即Representational State Transfer的縮寫。我對這個詞組的翻譯是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。
Web應(yīng)用程序兩個原則是:
客戶端和服務(wù)器之間的交互在請求之間是無狀態(tài)的。從客戶端到服務(wù)器的每個請求都必須包含理解請求所必需的信息。如果服務(wù)器在請求之間的任何時間點重啟,客戶端不會得到通知。此外,無狀態(tài)請求可以由任何可用服務(wù)器回答,這十分適合云計算之類的環(huán)境。客戶端可以緩存數(shù)據(jù)以改進性能。
分層系統(tǒng),這表示組件無法了解它與之交互的中間層以外的組件。通過將系統(tǒng)知識限制在單個層,可以限制整個系統(tǒng)的復(fù)雜性,促進了底層的獨立性。
REST的名稱"表現(xiàn)層狀態(tài)轉(zhuǎn)化"中,省略了主語。"表現(xiàn)層"其實指的是"資源"(Resources)的"表現(xiàn)層"。所謂"資源",就是網(wǎng)絡(luò)上的一個實體,或者說是網(wǎng)絡(luò)上的一個具體信息。
"資源"是一種信息實體,它可以有多種外在表現(xiàn)形式。我們把"資源"具體呈現(xiàn)出來的形式,叫做它的"表現(xiàn)層"(Representation)。它的具體表現(xiàn)形式,應(yīng)該在HTTP請求的頭信息中用Accept和Content-Type字段指定
如果客戶端想要操作服務(wù)器,必須通過某種手段,讓服務(wù)器端發(fā)生"狀態(tài)轉(zhuǎn)化"(State Transfer)。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。
客戶端用到的手段,只能是HTTP協(xié)議。具體來說,就是HTTP協(xié)議里面,四個表示操作方式的動詞:GET、POST、PUT、DELETE。它們分別對應(yīng)四種基本操作:GET用來獲取資源,POST用來新建資源(也可以用于更新資源),PUT用來更新資源,DELETE用來刪除資源。
綜合上面的解釋,我們總結(jié)一下什么是RESTful架構(gòu):
(1)每一個URI代表一種資源;
(2)客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層;
(3)客戶端通過四個HTTP動詞,對服務(wù)器端資源進行操作,實現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。
jax-rs
JAX-RS 建立了一種特殊的語言來描述資源,正如由其編程模型所表示的。有五種主要條目:根資源、子資源、資源方法、子資源方法以及子資源定位器。
注釋
@Path注釋被用來描述根資源、子資源方法或子資源的位置。value 值可以包含文本字符、變量或具有定制正則表達式的變量。清單 6 的例子展示了 @Path 注釋的主要應(yīng)用。
@GET、@POST、@PUT、@DELETE 以及 @HEAD 均是 HTTP 請求方法指示符注釋。您可以使用它們來綁定根資源或子資源內(nèi)的 Java 方法與 HTTP 請求方法。
@Consumes 注釋代表的是一個資源可以接受的 MIME 類型。
@Produces 注釋代表的是一個資源可以返回的 MIME 類型。JAX-RS @Provider:提供程序是一些應(yīng)用程序組件,允許在三個關(guān)鍵領(lǐng)域進行運行時行為的定制:數(shù)據(jù)綁定、異常映射以及上下文解析(比如,向運行時提供 JAXBContext 實例)。
MessageBodyWriters 被 JAX-RS 運行時用來序列化所返回資源的表示。
MessageBodyReaders 則與 MessageBodyWriters 相反。
配置
可以通過擴展 javax.ws.rs.core.Application 類實現(xiàn)配置這些類
開源jersey
Jersey is the open source, production quality, JAX-RS (JSR 311) Reference Implementation for building RESTful Web services. But, it is also more than the Reference Implementation. Jersey provides an API so that developers may extend Jersey to suit their needs.
jersey是一個開源的,產(chǎn)品級別的,基于jax-rs參考,用于構(gòu)建RestFul webService的實現(xiàn)。如果大家想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助。
初級 202925
初級 203221
初級 202629
初級 203743