restful URI 匹配原理,它是咋构成的?

7、JAX - RS:URI匹配与注入详解 本文详细介绍了JAX-RS中处理URI匹配与信息注入的核心机制,包括矩阵参数的定义与使用、子资源定位器的实现、完全动态调度的应用,以及多种注入注解(如@PathParam、@MatrixParam、@QueryParam等)的操作方法。通过理论与代码示例结合,帮助开发者构建灵活、高效的RESTful服务。 阅读详情

如果你写了一个JAX-RS (restful 风格的web service)程序,放在了tomcat 等web service上面,那restful 客户端程序或者browser 如何知道你的资源地址 URI呢?

下面就说下这个JAX-RS web service对外提供的URI是由那几部分组成的。


/*

 * How Request URI is Matched?
Lets assume 

1) you have a web application called 'rest'  , in this example, it is  'rest.war'  deployed on tomcat server.


2) CXFServlet's url-pattern is "/test/*"  (here it is defined in web.xml as below example shows)

web.xml 的内容如下:


.......

<servlet>
<servlet-name>CXF315</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXF315</servlet-name>
<url-pattern>/WSRest/*</url-pattern>

</servlet-mapping>

...


3)  Finally, jaxrs:server's address is "/bar" 
(it is defined in Spring's bean xml such as applicationContext.xml as below shown) 


<bean id="WSRestfulBean" class="cxf.server.MyServiceImpl"/>   
<jaxrs:server id="userService" address="/userws">
<jaxrs:serviceBeans>
  <ref bean="WSRestfulBean"/>
</jaxrs:serviceBeans>
</jaxrs:server>

4) 后面就是你的JAX-RS (restful web service)的代码提供的@Path参数了

例如

 RS.java


@Path("/")
public interface EmployeeWSRestFulService {

@Path("/getUserById/{id}/")
@GET
@Produces({"application/json","application/xml"}) //json is high priority
User getUserById(@PathParam("id") String id);

@Path("/")
@GET
//json is high priority, default is application/xml
@Produces({"application/json","application/xml"}) 
List<User> findAllUsers();

@Path("/updateUser/")
@PUT
@Consumes({"application/json","application/xml"})   
Response updateUser(User user);


@Path("/getUserById/{id}/")
@GET
@Produces({"application/json","application/xml"}) //json is high priority
User getUserById(@PathParam("id") String id);


@Path("/")
@GET
//json is high priority, default is application/xml
@Produces({"application/json","application/xml"}) 
List<User> findAllUsers();


...

}

这样 带有  /test/WSRest/userws/ 的 Http Get 请求就会被List<User> findAllUsers()处理,而带 /test/WSRest/userws/getUserById/1/  Get HTTP request 就会被getUserById("1")处理。

注意这里的root @Path是"/",如果不是"/",则上面的URI还会加一级。例如,假设上面的代码是这样:

@Path("/thb")
public interface EmployeeWSRestFulService {

//里面内容不变

}

则  带 URI /test/WSRest/userws/ thb/getUserById/1/ 的  HTTP Get  才会被getUserById("1")处理了。


Requests like /rest/test/bar or /rest/test/bar/baz will be delivered to one of the resource classes in a given jaxrs:server 
endpoint. For the former request to be handled, a resource class with @Path("/") should be available, in the latter case - 
at least @Path("/") or a more specific @Path("/baz").
 * 
 */
RESTful API接口设计指南 作者:禅与计算机程序设计艺术 1.简介 REST(Representational State Transfer)即表述性状态转移,是一个Web服务的架构风格,旨在通过一组简单的规则来定义如何实现Web服务,使客户端开发人员能够更简单、快速地开发出可靠、可伸缩的Web应用。它主要倡导使用HTTP协议来传 阅读详情

相关推荐

详解Nginx location 匹配规则

本篇文章主要介绍了Nginx location 匹配规则,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

SpringBoot拦截器中获取RESTful风格原始Url和参数

【代码】SpringBoot拦截器中获取RESTful风格原始Url和参数。

mengting2040的博客 381

zemax混合式非序列模拟

注意不要点击左侧的非序列模式,那个时纯粹的非序列,会清除序列模式的数据。第2、4、6透镜材质为空气,是为了让光线进入到多重透镜内部。这时普通的优化方式会失败。平行光束经过多焦透镜时,会汇聚在不同焦距处。所以还需要控制能量的大小,进行优化。接下来用非序列模式设计一个多焦透镜。像面的孔径为圆形通光孔:0-1.2。透镜不同位置处有不同的聚焦位置。透镜的z轴位置相同,重合。

fendoudecheng的博客 3065

SpringBoot请求参数处理 原理刨析 restful风格支持

文章目录一、 请求映射1. rest使用与原理**1.resut的使用**2. rest原理2. 请求映射原理 一、 请求映射 1. rest使用与原理 如今大多主流网站都运用的Restful编程风格,不同于传统的,根据请求参数名区分,rest风格是通过请求方法作为区分; 简单来说,就是用HTTP请求方式动词来表示对资源的操作。 以前操作 /getUer:获取用户 /deleteUser:删除用户 /updateUser/更新用户 resut风格 /user GET-获取用户 POST-新增用户 DE

Janyi_的博客 995

【feature_column处理】- indicator_column(指示列)和embedding_column(嵌入列)

1. 开胃菜 我们先来了解一下tf.feature_column.input_layer def input_layer(features, feature_columns, weight_collections=None, trainable=True, cols_to_vars=None, cols_to_output_tensors=None)

DataAlgo 1485

UE4-(反射)场景采集之场景采集2D

一、场景采集分为两种:场景采集2D、场景采集立方体 场景采集2D:采集2D图片模式。 操作: 1.选择场景采集2D,是一个摄像机的物体,摆放到场景中。 2.在文件夹空白处创建纹理,一定要注意创建纹理的格式, 纹理分为立方体渲染目标和渲染目标,此处我们使用的是2D模式,所以选择渲染目标(Texture Render Target2D)。创建后重命名为RenderTextue2D。 3.选择场景中刚拖入的 SceneCapture2D 摄像机在细节面板的Scene Capture 将..

Stone的博客 4601

Spring MVC Controller和Restful

一、控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。 控制器负责解析用户的请求并将其转换为一个模型。 在Spring MVC中一个控制器类可以包含多个方法 在Spring MVC中,对于Controller的配置方式有很多种 1.1 实现Controller接口 Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法; //实现该接口的

Jak的博客 505

生成对抗网络——CGAN(代码+理解)

CGAN(Conditional Generative Adversarial Network)模型是一种 深度学习模型,属于生成对抗网络(GAN)的一种 变体。它的 基本思想是通过 训练生成器和判别器两个网络,使生成器能够生成与给定条件 相匹配的 合成数据,而判别器则 负责区分真实数据和 生成数据。相比于GAN它引入了条件信息(y),使得生成器可以生成与给定条件相匹配的合成数据,从而提高了生成数据的可控性和针对性。

CXDNW的博客 1万+

Spring boot实现Rest风格请求及底层原理

Rest风格的介绍 如今各大公司都是使用restful风格来定义接口,restful也是一套接口的规范,restful可以使我们的接口更加简洁、快捷高效、透明。 常见的Rest风格/CRUD 请求方式 对应属性 使用方式 GET 查询 表单请求方式为get POST 新增 表单请求方式为post DELETE 删除 表单请求方式为post/前段框架中发ajax请求可以为delete PUT 修改 表单请求方式为post/前段框

李哈zzz的博客 1725

搭建ROS小车真的难吗?

搭建ROS小车真的难吗?不难 1.引言 本着为大家谋福利的心态,根据自己以往的开发经验,打算写一个从零开始制作一个可以实现地图构建和导航的ROS小车。目前某宝上面有很多现成产品,但是我个人认为,一个好的移动机器人开发工程师,应该对机器人的整个流程都能具备维护的能力,然后再深入研究其中一个方向即可。看到网上很少有整个系列的开发教程,看到同学们大多东拼西凑,浪费了不少时间。我就想着利用空余时间,将我本人的开发过程输出给大家。有基础理论、有实际工程代码、有丰富的学习资料,尽最大努力帮大家进入移动机器人的大门。 国

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

RESTful架构是什么?底层原理是什么?

RESTful架构是什么?底层原理是什么?

长风破浪会有时的博客 528

C#与海康威视工业相机结合OpenCV与WPF:打造高效的机器视觉应用程序

本文介绍了基于C#、海康威视工业相机SDK和OpenCV的机器视觉应用开发方法。首先配置开发环境,包括海康SDK、OpenCvSharp和WPF项目设置。重点阐述了如何通过SDK初始化相机、获取视频流,并将YUV数据转换为OpenCV可处理的Mat格式进行图像处理(如边缘检测)。同时展示了如何用WPF实现界面交互和实时图像显示。该方案为工业自动化、质量检测等场景提供了高效的技术实现路径,结合了海康相机的高性能采集、OpenCV的强大算法和WPF的交互优势,具有较高的实用价值。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1496

JAX-RS @Path URI匹配示例

在JAX-RS中,可以使用@Path将URI模式绑定到Java方法。 请参阅以下示例,向您展示其工作方式。 1.普通URI匹配 请参阅带有@Path注释的常规URI匹配。 import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Response; @Path("/users") public ...

一名可爱的技术搬运工 731

uniapp [全端兼容] - 实现上传本地视频到后端服务器及在线预览播放视频+移除视频+进度条上传,将已选视频上传服务端并可预览视频和删除功能,上传单个或多个视频文件及大文件(H5、小程序、app)

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniapp+uview上传视频并预览,UNI-APP视频上传组件,实现视频文件上传视频回显,上传视频并预览、上传多个视频,实现上传视频功能+预览,上传显示视频功能,上传视频预览移除,批量上传视频,上传超大视频文件,视频上传并预览效果,uniapp上传视频,使用uview上传视频及预览,上传视频和删除视频功能,视频流上传播放功能,上传视频到后端,视频上传与实时预览功能,upload上传组件,视频播放器

🏆 前端领域优质创作者 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Blog #188: URI匹配与查询

2026-01。

时代我西的博客 339

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

攻克ESP-IDF HTTP服务器:一文掌握URI匹配的核心逻辑与实战技巧

你是否曾被HTTP服务器中的URI匹配问题困扰?当客户端请求 `/api/user/123` 时,服务器如何准确找到对应的处理函数?本文将深入解析ESP-IDF(Espressif IoT Development Framework)中HTTP服务器的URI匹配机制,从基础原理到高级应用,帮你彻底掌握这一核心技术点。读完本文,你将能够:理解URI匹配的两种核心算法、掌握通配符的灵活运用、解决常见的...

gitblog_00848的博客 531

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

网络通信必备基础之Restful-URL(一),原理竟然是这

分享一份工作1到5年以上的Android程序员架构进阶学习路线体系,希望能对那些还在从事Android开发却还不知道如何去提升自己的,还处于迷茫的朋友!阿里P7级Android架构师技术脑图;查漏补缺,体系化深入学习提升(详细点击我的GitHub领取)**全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记。

m0_61549740的博客 1025

RESTful API — 规范概念、URI 设计、映射 HTTP 方法、API 版本管理、API 命名、统一分页、过滤、排序、 搜索功能

1. RESTful 规范概念 REST 有一系列规范,满足这些规范的 API 均可称为 RESTful API。REST 规范把所有内容都视为资源,也就是说网络上一切皆资源。REST 架构对资源的操作包括获取、创建、修改和删除,这些操作正好对应 HTTP 协议提供的 GET、POST、PUT 和 DELETE 方法。HTTP 动词与 REST 风格 CRUD 的对应关系见下表: REST 具有以下核心特点: ...

wohu1104的专栏 1872

Restful接口的版本控制

1. 前言软件迭代是开发者必须面临的问题,现在有一个容易被大家忽略的问题就是 API 的版本控制。不是所有的用户都热衷于最新的版本的软件,而业务又是多变的。因此当新版本发布时要确保向后兼...

码农小胖哥 2195

RESTful小拓展

RESTful 1.每个URI代表一种资源 2.客户端与服务器之间,传递这种资源的某种表现层 3.客户端通过HTTP动词,对服务器端资源进行操作,实现“表现层状态转换” RESTful的应用相对广泛,在豆瓣网上也有所应用 ----------------------------------------------------------- 但并不是所有的接口都适用于RESTful的,例...

qq_39586619的博客 175

restful鉴权白名单匹配url

需求 在我们开发的中会遇到这样一种情况,在鉴权的时候,需要过滤掉白名单,例如:定义有这样一个url:good/detail/{id},需要判断uri是否能通过,传统的equals方法似乎有点难(PS:如果能用equals方法解决的请在评论区告诉我) 幸好spring提供了一个很好用的类,用于匹配 AntPathMatcher antPathMatcher = new AntPathMatcher(); // path路径是否符合pattern的规范 boolean match = antPathMatc

才子佳人的博客 2275

URI Template Patterns

URI 模板可以提供给@RequestMapping注解访问特定的url一个很方便的方式。URI模板是一个类似于URI的String,包含一个或者多个参数名字。例如,URI模板是以下的情况:http://www.example.com/users/{userId}包含了变量userId, 如果通过这样的一个URI去访问http://www.example.com/users/fred,那么userId的值就是fred。

鬼剑愁的专栏 2084

URI模板

URI模板可以为快速访问 @RequestMapping 中指定的URL的一个特定的部分提供很大的便利。URI模板是一个类似于URI的字符串,只不过其中包含了一个或多个的变量名。当你使用实际的值去填充这些变量名的时候,模板就退化成了一个URI。在URI模板的RFC提议中定义了一个URI是如何进行参数化的。比如说,一个这个URI模板 http://www.example.com/users/{use

marge_lmj的博客 962

restFul的增删改查

Spring自定义注解学习:https://blog.youkuaiyun.com/qq_34582693/article/details/88943120 JVM底层原理学习:https://blog.youkuaiyun.com/qq_34582693/article/details/79513676 JAVA多线程学习:https://blog.youkuaiyun.com/qq_34582693/article/details/79843258 Spring框架学习:https://blog.youkuaiyun.com/qq_34582693/

Aa__Ki的博客 1577

Spring UriTemplate 详解:动态 URI 构建与解析的利器

Spring框架中的UriTemplate类是处理URI模板的核心工具,支持URI动态生成和变量解析。它通过占位符{变量名}定义模板,提供expand()方法填充变量生成完整URI,以及match()方法从实际URI中提取变量值。主要应用于RESTful API构建、URI参数提取、HATEOAS链接生成等场景,具有避免手动拼接错误、集中管理模板、自动URL编码等优势。需注意变量类型自动转换、严格路径匹配等特性,是Spring Web开发中处理动态URI的高效工具。

a_beiyo的博客 387
上一篇: Apache CXF REST example
下一篇: prefix wsdp is not bound to a namespace
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值