jax-rs jax-ws_快速浏览JAX-RS请求与方法匹配
jax-rs jax-ws
在本文中,我們來(lái)看一下JAX-RS中與資源方法匹配的HTTP請(qǐng)求 。 它是JAX-RS的最基本功能之一。 通常,使用JAX-RS API的開發(fā)人員不會(huì)接觸(或真正不需要知道) 匹配過(guò)程的細(xì)節(jié),請(qǐng)放心,由于我們的RESTful,JAX-RS運(yùn)行時(shí)會(huì)在后臺(tái)悄悄地推出其算法??蛻舳吮3帜切〩TTP請(qǐng)求的到來(lái)!
萬(wàn)一術(shù)語(yǔ)請(qǐng)求資源方法匹配對(duì)您來(lái)說(shuō)是陌生的–就是JAX-RS提供程序通過(guò)它向您的資源類之一(使用@Path裝飾)的特定方法分配HTTP請(qǐng)求的過(guò)程。 可以使用JAX-RS規(guī)范文檔來(lái)詳細(xì)解釋這一點(diǎn)( 不過(guò),在本文中,我們將僅介紹冰山一角! )
主要標(biāo)準(zhǔn)
在請(qǐng)求匹配過(guò)程中要考慮哪些因素?
- HTTP請(qǐng)求URI
- HTTP請(qǐng)求方法(GET,PUT,POST,DELETE等)
- HTTP請(qǐng)求的媒體類型
- 請(qǐng)求的響應(yīng)的媒體類型
高級(jí)步驟
粗略的圖表應(yīng)該會(huì)有所幫助。 在此之前,這里是示例場(chǎng)景
- 兩個(gè)資源類 – Books.java,Movies.java
- Books.java中的資源方法路徑 – / books /,/ books / {id}(URI路徑參數(shù)),/ books?{isbn}(URI查詢參數(shù))
- HTTP請(qǐng)求URI – / books?isbn = xyz
誰(shuí)會(huì)贏 ?
@Path("books") public class Books{@Produces("application/json")@GETpublic List<Book> findAll(){//find all books}@Produces("application/json")@GET@Path("{id}")public Book findById(@PathParam("id") String bookId){//find book by id e.g. /books/123}@Produces("application/json")@GETpublic Book findByISBN(@QueryParam("isbn") String bookISBN){//find book by ISBN e.g. /books?isbn=xyz} }@Path("movies") public class Books{@Produces("application/json")@GETpublic List<Movie> findAll(){//find all movies e.g. /movies/}@Produces("application/json")@GET@Path("{name}")public Movie findById(@PathParam("name") String name){//find movie by name e.g. /movies/SourceCode} }
JAX-RS請(qǐng)求方法匹配過(guò)程
分解正在發(fā)生的事情
- 將可能匹配的候選對(duì)象縮小到一組資源類
這是通過(guò)將HTTP請(qǐng)求URI與資源類上@Path注釋的值進(jìn)行匹配來(lái)完成的
- 從上一步的資源類集中,找到一組可能匹配的候選方法(將算法應(yīng)用于過(guò)濾后的資源類集)
- 歸結(jié)為可以處理HTTP請(qǐng)求的確切方法
將HTTP請(qǐng)求謂詞與HTTP方法特定的注釋(@ GET,@ POST等)進(jìn)行比較,將Content-Type標(biāo)頭指定的請(qǐng)求媒體類型與@Consumes注釋中指定的媒體類型以及指定的響應(yīng)媒體類型進(jìn)行比較將Accept標(biāo)頭中的“首選項(xiàng)”與@Produces批注中指定的媒體類型進(jìn)行比較
我強(qiáng)烈建議您查看org.glassfish.jersey.server.internal.routing包中實(shí)現(xiàn)類的Jersey服務(wù)器端邏輯 ,以加深了解。 您可以查看的一些類/實(shí)現(xiàn)是
- MatchResultInitializerRouter
- SubResourceLocatorRouter
- 方法選擇路由器
- 路徑匹配路由器
是時(shí)候挖了……。?
祝您黑客愉快!
翻譯自: https://www.javacodegeeks.com/2015/03/quick-peek-at-jax-rs-request-to-method-matching.html
jax-rs jax-ws
總結(jié)
以上是生活随笔為你收集整理的jax-rs jax-ws_快速浏览JAX-RS请求与方法匹配的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 葫芦侠我的世界修改器电脑版(葫芦侠我的世
- 下一篇: 联想哪款电脑比较好用(联想哪款电脑比较好