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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RESTful Web服务可发现性,第4部分

發布時間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RESTful Web服务可发现性,第4部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這是有關使用Spring 3.1和Spring Security 3.1和基于Java的配置來建立安全的RESTful Web Service的系列文章的第四篇 。 本文將重點介紹REST API,HATEOAS的可發現性以及由測試驅動的實際方案。

引入REST可發現性

API的可發現性是一個值得引起足夠關注的主題,因此很少有API能夠正確地實現它。 如果做得正確,這也可以使API不僅具有RESTful和可用性,而且具有優雅的風格。

要了解可發現性 ,需要了解這種約束,即“超媒體作為應用程序狀態引擎(HATEOAS)”; RESTful API的這種約束是關于作為應用程序狀態唯一驅動程序的超媒體(實際上是超文本)對資源上的動作/轉換的完全可發現性。 如果交互作用是由API通過對話本身(特別是通過超文本)來驅動的,那么就沒有文檔 ,因為這會迫使客戶端做出實際上不在API上下文之外的假設。

此外,繼續這種邏輯思路,確實可以認為RESTful API的唯一方法是,如果它可以從根完全發現并且沒有先驗知識 ,這意味著客戶端應該能夠通過在GET上進行GET來導航API。根。 展望未來,所有狀態更改均由客戶端使用REST API在表示形式中提供的可用且可發現的轉換來驅動(因此稱為Representational State Transfer )。

總之,服務器應具有足夠的描述性,以指示客戶端如何僅通過超文本來使用API??,在HTTP對話的情況下,該超文本可能是Link標頭。

具體的可發現性場景(由測試驅動)


那么,REST服務可被發現意味著什么? 在本節中,我們將使用Junit, rest-assured和Hamcrest來測試可發現性的各個特征。 由于REST Service已在該系列的第3部分中得到保護,因此在使用API??之前,每個測試都需要首先進行身份驗證 。 還需要一些實用程序來解析響應的Link標頭。

發現有效的HTTP方法
當使用無效的HTTP方法使用RESTful Web服務時,響應應為405 METHOD NOT ALLOWED ; 此外,它還應該使用響應中的“ 允許 HTTP標頭”來幫助客戶端發現該特定資源所允許的有效HTTP方法:

@Test public void whenInvalidPOSTIsSentToValidURIOfResource_thenAllowHeaderListsTheAllowedActions(){// Givenfinal String uriOfExistingResource = this.restTemplate.createResource();// WhenResponse res = this.givenAuthenticated().post( uriOfExistingResource );// ThenString allowHeader = res.getHeader( HttpHeaders.ALLOW );assertThat( allowHeader, AnyOf.<String> anyOf( containsString("GET"), containsString("PUT"), containsString("DELETE") ) ); }

發現新創建的資源的URI
使用位置 HTTP標頭,創建新資源的操作應始終在響應中包括新創建資源的URI。 如果客戶端在該URI上執行GET,則該資源應可用:

@Test public void whenResourceIsCreated_thenURIOfTheNewlyCreatedResourceIsDiscoverable(){// WhenFoo unpersistedResource = new Foo( randomAlphabetic( 6 ) );Response createResponse = this.givenAuthenticated().contentType( MIME_JSON ).body( unpersistedResource ).post( this.paths.getFooURL() );final String uriOfNewlyCreatedResource = createResp.getHeader( HttpHeaders.LOCATION );// ThenResponse response = this.givenAuthenticated().header( HttpHeaders.ACCEPT, MIME_JSON ).get( uriOfNewlyCreatedResource );Foo resourceFromServer = response.body().as( Foo.class );assertThat( unpersistedResource, equalTo( resourceFromServer ) ); }

該測試遵循一個簡單的場景:創建一個新的Foo資源,并使用HTTP響應來發現該資源現在可訪問的URI 。 然后,測試會更進一步,并對該URI進行GET檢索以獲取資源并將其與原始資源進行比較,以確保資源已正確保留。

發現URI以獲取該類型的所有資源
當我們獲取特定的Foo實例時,我們應該能夠發現下一步可以做什么:我們可以列出所有可用的Foo資源。 因此,獲取資源的操作應始終在其響應中包含URI,以在何處獲取該類型的所有資源,再次使用Link標頭:

@Test public void whenResourceIsRetrieved_thenURIToGetAllResourcesIsDiscoverable(){// GivenString uriOfExistingResource = this.restTemplate.createResource();// WhenResponse getResponse = this.givenAuthenticated().get( uriOfExistingResource );// ThenString uriToAllResources = HTTPLinkHeaderUtils.extractURIByRel( getResponse.getHeader( "Link" ), "collection" );Response getAllResponse = this.givenAuthenticated().get( uriToAllResources );assertThat( getAllResponse.getStatusCode(), is( 200 ) ); }

該測試解決了REST中鏈接關系的一個棘手問題:要檢索所有資源的URI使用rel =“ collection”語義。 這種類型的鏈接關系尚未標準化,但已被多種微格式使用 ,并已提出標準化要求。 非標準鏈接關系的使用打開了有關RESTful Web服務中的微格式和更豐富語義的討論。

其他可能發現的URI和微格式

其他URI可能會通過Link標頭發現,但是在沒有轉移到更豐富的語義標記(例如定義 自定義鏈接關系 , Atom發布協議或微格式)的情況下 ,現有的鏈接關系類型只有這么多。另一篇文章。

例如,如果在特定資源上執行GET時客戶端可以發現URI來創建新資源,那將是一個很好的選擇。 不幸的是,與模型創建語義沒有鏈接關系。 幸運的是,標準做法是創建的URI與獲取該類型的所有資源的URI相同,唯一的區別是POST HTTP方法。

結論

本文介紹了RESTful Web服務上下文中可發現性的一些特征,討論了HTTP方法發現,創建和獲取之間的關系,發現URI以獲取所有資源的關系等。在接下來的文章中,我將重點介紹從root ,分頁,自定義鏈接關系,Atom發布協議以及Spring REST服務中的Discoverability的實際實現開始發現API。 同時,檢查github項目 。

參考: RESTful Web服務可發現性,我們的JCG合作伙伴 Eugen Paraschiv在baeldung博客上的第4部分 。

相關文章 :

  • 使用Spring 3.1和基于Java的配置引導Web應用程序,第1部分
  • 使用Spring 3.1和基于Java的配置構建RESTful Web服務,第2部分
  • 使用Spring Security 3.1保護RESTful Web服務,第3部分
  • Spring的REST服務發現性,第5部分
  • 使用Spring Security 3.1的RESTful服務進行基本身份驗證和摘要身份驗證,第6部分
  • Spring&Quartz集成自定義注釋
  • Spring MVC攔截器示例
  • 在運行時交換出Spring Bean配置

翻譯自: https://www.javacodegeeks.com/2011/12/restful-web-service-discoverability.html

總結

以上是生活随笔為你收集整理的RESTful Web服务可发现性,第4部分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线视频污 | 一级视频黄色 | 免费婷婷 | 日韩中文电影 | 日本热久久 | 成人在线视频一区二区 | 天天插av| 欧美激情精品久久 | 成年人免费网站在线观看 | 91pao| 国产黄色影院 | 亚洲精品久久久久久久久 | 亚洲av无码国产精品永久一区 | 国产一级性生活片 | 九九热视频在线播放 | 精品国产18久久久久久二百 | 天天撸一撸 | 秋霞电影网一区二区 | 亚洲福利久久 | 天天鲁一鲁摸一摸爽一爽 | 日韩一级完整毛片 | 免费看裸体视频网站 | www.久久网| 岛国av一区二区三区 | 日韩免费福利视频 | 天天射天天色天天干 | 色婷婷av一区二区三区麻豆综合 | 伦理片一区二区三区 | 飘花影院伦理片 | 亚洲精品一二三四区 | 亚洲精品国产成人无码 | 天天人人 | 国产九九| 欧美色图视频在线 | 真实偷拍激情啪啪对白 | 18一20岁毛毛片 | 人妖天堂狠狠ts人妖天堂狠狠 | 色久在线 | 国产精品一区二区三区四区五区 | 亚洲高清影院 | 日韩av无码久久 | 黄色的网站在线 | 亚洲精品高清在线观看 | 亚洲精品欧美在线 | 天堂√8在线中文 | 91中文视频| 18男女无套免费视频 | 美女扣逼喷水视频 | 水蜜桃91 | 精品少妇一区二区三区在线观看 | 久久黄色视 | 亚洲在线视频 | 国产黄色网 | 天天躁夜夜躁狠狠是什么心态 | 久久中文免费视频 | 国产精品免 | 91在线日本 | 波多野结衣91| 欧美日韩生活片 | 国产精品91在线 | www天天操| 国产一区二区三区精品在线观看 | 日本一区二区三区在线免费观看 | 操bbbbb| 黑人巨茎大战欧美白妇 | 日日夜夜免费 | 美女扒开尿口给男人捅 | 久久久久久久综合 | 国产在线传媒 | 曰本女人与公拘交酡 | 黄毛片在线观看 | 亚洲国产日韩一区二区 | 成人毛片一区二区三区 | 欧美日韩色图 | 欧美www视频 | 99精品亚洲| av二区在线 | 动漫av在线 | 污污污污污污www网站免费 | 亚洲19p| 91高清免费| 伊人98| 91黑丝在线观看 | 国产乱码精品一区二区三区中文 | 国产高清片 | 有码视频在线观看 | 亚洲天堂网站 | 看了让人下面流水的视频 | 国产xxxx孕妇 | 国产理论一区 | 国产日韩欧美中文 | 亚洲AV午夜成人片 | 日韩精品高清在线观看 | 性中文字幕 | 国产在线视频你懂得 | 亚洲v国产v | 国产精品乱码一区二三区小蝌蚪 | 日韩视频免费看 | 欧美色图激情小说 |