jax-rs jax-ws

在本文中,我们来看一下JAX-RS中与资源方法匹配HTTP请求 。 它是JAX-RS的最基本功能之一。 通常,使用JAX-RS API的开发人员不会接触(或真正不需要知道) 匹配过程的细节,请放心,由于我们的RESTful,JAX-RS运行时会在后台悄悄地推出其算法。客户端保持那些HTTP请求的到来!

万一术语请求资源方法匹配对您来说是陌生的–就是JAX-RS提供程序通过它向您的资源类之一(使用@Path装饰)的特定方法分配HTTP请求的过程。 可以使用JAX-RS规范文档来详细解释这一点( 不过,在本文中,我们将仅介绍冰山一角!

主要标准

在请求匹配过程中要考虑哪些因素?

  • HTTP请求URI
  • HTTP请求方法(GET,PUT,POST,DELETE等)
  • HTTP请求的媒体类型
  • 请求的响应的媒体类型

高级步骤

粗略的图表应该会有所帮助。 在此之前,这里是示例场景

  • 两个资源类 – Books.java,Movies.java
  • Books.java中的资源方法路径 – / books /,/ books / {id}(URI路径参数),/ books?{isbn}(URI查询参数)
  • HTTP请求URI – / books?isbn = xyz

谁会赢 ?

@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请求方法匹配过程

分解正在发生的事情

  • 将可能匹配的候选对象缩小到一组资源类

这是通过将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

jax-rs jax-ws

jax-rs jax-ws_快速浏览JAX-RS请求与方法匹配相关推荐

  1. 快速浏览JAX-RS请求与方法匹配

    在本文中,我们来看一下JAX-RS中与资源方法匹配的HTTP请求 . 它是JAX-RS的最基本功能之一. 通常,使用JAX-RS API的开发人员不会接触(或真正不需要知道) 匹配过程的细节,请放心, ...

  2. 1、excel常用技能(数据分列、数据快速浏览、转置、选择性粘贴运算、绘制对角线、单元格内换行、插入注解文字或图片)

    (1)将同一列中的数据分为不同类型的数据列 选中需要分列的数据单元格,选择工具栏中的"数据.分列.分隔符号.下一步.选择分隔符号(本例中是选中空格).下一步.完成". (2)将姓和 ...

  3. 计算机画图软件技巧,Win7系统自带画图工具快速浏览图片的技巧

    Ghost Win7系统中的自带的画图功能其实非常好用,但是却被大部分用户忽略,尤其是在 win7旗舰版系统 中其界面和功能比其它系统又得到了进一步的提升,能在空白绘图区域或在现有图片上创建绘图.利用 ...

  4. ArcGIS ArcSDE将数据注册或取消注册为版本快速浏览

    摘要:ArcGIS ArcSDE将数据注册或取消注册为版本快速浏览.可将 ArcSDE 地理数据库中的数据集注册为版本但不将编辑内容移动到基表.注册为版本并将编辑内容移动到基表,或者不注册为版本.默认 ...

  5. android studio 自动生成对象,在Android Studio中快速导入可绘制对象的方法?

    在Android Studio中快速导入可绘制对象的方法? 在Android项目中的某个时候,您将需要在res/drawable目录中导入一些可绘制对象-工具栏图标,图像,UI功能. 大多数情况下,您 ...

  6. Zen Coding: 一种快速编写HTML/CSS代码的方法

    译自:Smashing Magazine 中文:Zen Coding: 一种快速编写HTML/CSS代码的方法 请尊重版权,转载请注明来源! 在本文中我们将展示一种新的使用仿CSS选择器的语法来快速开 ...

  7. 手淘搜索流量暴增,快速打造爆款的核心方法

    想要打造爆款首先第一步是必须要有流量,有了流量才有打造爆款的基础. 首先我们要知道形成爆款的因素,1大众化,2实惠,3点击率高点击量高,4宝贝数据要呈现上涨的趋势,5高的人气 收藏 加购物车量 深的浏 ...

  8. vscode 新建php模板,使用VSCode快速创建vue文件模版的方法介绍

    VSCode怎么自定义代码模版?下面本篇文章给大家介绍一下VSCode快速创建vue文件模版的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 修改位置 打开vscode首选项- ...

  9. pythonweb毕业设计-[分享]我发现了一个快速完成物联网毕业设计的好方法!

    原标题:[分享]我发现了一个快速完成物联网毕业设计的好方法! 对于计算机相关专业的毕业生来说,毕业论文真的是一件特别令人头疼的事情,当然学霸除外-- 毕设.编程--每每想到这里!是不是很想原地爆炸?! ...

最新文章

  1. [持续更新][小工具]计算器
  2. 13.跨进程读写内存
  3. MySQL带比较运算符的子查询
  4. 从性能参数到业务大数据,浅谈直播CDN服务监控
  5. 导入Jquery.min.js时 JQuery 上打红X了
  6. 把SQLAlchemy查询对象转换成字典/json使用(分开)
  7. pycharm上python项目的导出_pycharm项目打包成exe
  8. 网络流24题(更新中
  9. 计算机绘图设备cmy,《计算机图形学》练习测试题库
  10. macOS录制系统声音及麦克风的三种方法
  11. gnome 如何自定义样式_在Gnome 3中自定义字体
  12. php 数字上下选取,PHP中常见的数字掐头去尾操作方法
  13. 海康服务器装win7系统,详解win7旗舰版系统必须重装的四种情况
  14. 完全卸载oracle|oracle卸载|彻底卸载oracle
  15. 运筹学基础【五】 之 线性规划
  16. 基因表达微阵列数据分类的多目标启发式算法
  17. 盘点自动化设备中的四种常用模组
  18. windows小技巧---复制百度文库vip内容/解决微信文件过大
  19. 获取目录服务器信息失dnf,DNF面临历史最大服务器崩溃:跨五回档风波,深渊史诗出货消失...
  20. C++ Primer 总结之Chap3 Library Types

热门文章

  1. P2657-[SCOI2009]windy数【数位dp,dfs】
  2. Codeforces Round #659 (Div. 2)
  3. 【LCT】遥远的国度(P3979)
  4. 纪中B组模拟赛总结(2020.2.09)
  5. 【模拟】Biotech
  6. 动态规划训练11 [String painter HDU - 2476]
  7. 为什么不应该重写service方法
  8. 2017年,Java程序猿10本经典好书推荐
  9. 阿里巴巴对Java编程【安全规约】的规约
  10. CSS3的几个变形案例……