网站建设的可用性,市场营销论文3000字,营销网站的建造步骤,成都百度小程序开发在本文中#xff0c;我们来看一下JAX-RS中与资源方法匹配的HTTP请求 。 它是JAX-RS的最基本功能之一。 通常#xff0c;使用JAX-RS API的开发人员不会接触#xff08;或真正不需要知道#xff09; 匹配过程的细节#xff0c;请放心#xff0c;由于我们的RESTful#xff… 在本文中我们来看一下JAX-RS中与资源方法匹配的HTTP请求 。 它是JAX-RS的最基本功能之一。 通常使用JAX-RS API的开发人员不会接触或真正不需要知道 匹配过程的细节请放心由于我们的RESTfulJAX-RS运行时会在后台悄悄地推出其算法。客户端保持那些HTTP请求的到来 以防万一术语“ 请求资源方法匹配”对您来说是陌生的–它不过是JAX-RS提供程序将HTTP请求分派到您的资源类之一的特定方法使用Path装饰的过程。 可以使用JAX-RS规范文档来详细解释这一点 不过在本文中我们将仅介绍冰山一角 主要标准 在请求匹配过程中要考虑哪些因素 HTTP请求URI HTTP请求方法GETPUTPOSTDELETE等 HTTP请求的媒体类型 请求的响应的媒体类型 高级步骤 粗略的图表应该会有所帮助。 在此之前这里是示例场景 两个资源类 – Books.javaMovies.java Books.java中的资源方法路径 – / books // books / {id}URI路径参数/ books{isbn}URI查询参数 HTTP请求URI – / booksisbn xyz 谁会赢 Path(books)
public class Books{Produces(application/json)GETpublic ListBook findAll(){//find all books}Produces(application/json)GETPath({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?isbnxyz}
}Path(movies)
public class Books{Produces(application/json)GETpublic ListMovie findAll(){//find all movies e.g. /movies/}Produces(application/json)GETPath({name})public Movie findById(PathParam(name) String name){//find movie by name e.g. /movies/SourceCode}
} JAX-RS请求方法匹配过程 分解正在发生的事情 将可能匹配的候选对象缩小到一组资源类 这是通过将HTTP请求URI与资源类上Path注释的值进行匹配来完成的 从上一步中的资源类集合中找到一组可能匹配的候选方法将算法应用于过滤后的资源类集合 归结为可以处理HTTP请求的确切方法 将HTTP请求谓词与HTTP方法特定的注释 GET POST等进行比较将Content-Type标头指定的请求媒体类型与Consumes注释中指定的媒体类型以及指定的响应媒体类型进行比较将Accept标头中的“首选项”与Produces批注中指定的媒体类型进行比较 我强烈建议您查看org.glassfish.jersey.server.internal.routing包中的实现类的Jersey服务器端逻辑 以加深了解。 您可以查看的一些类/实现是 MatchResultInitializerRouter SubResourceLocatorRouter 方法选择路由器 路径匹配路由器 是时候挖了……。 骇客骇客 翻译自: https://www.javacodegeeks.com/2015/03/quick-peek-at-jax-rs-request-to-method-matching.html