jersey REST的接口简述
GET方法:只读,是幂等和安全的。在接口中抽象地定义了资源的请求方法类型后,其全部实现类都无须再定义。
HEAD方法:与GET方法相似,只是服务器端的返回值不包括HTTP实体。
OPTIONS方法:与GET方法相似,用于读取资源所支持的所有HTTP请求方法。
PUT方法:PUT方法是幂等的,即多次插入或者更新同一份数据,在服务器对资源状态所产生的改变是相同的。PUT方法是不安全的,有写动作的HTTP方法都不是安全的。
PUT方法主要用于更新或添加资源。对于非安全的HTTP方法,需要考虑请求实体媒体类型和响应实体媒体类型。请求实体类型使用HTTP头的CONTENT TYPE定义,响应实体媒体类型使用HTTP头的ACCEPT定义。
DELETE方法:是幂等的,即多次删除同一份数据,在服务器端产生的改变是相同的。当响应实体为空时,HTTP状态码为204.
POST方法:是一种写操作的HTTP请求(RPC的所有写操作均使用POST方法,而REST只使用HTTP的POST方法添加资源)。POST既不幂等也不安全,因为请求会改变服务器端的状态,每次请求对服务器端资源状态的改变并不是相同的。
@QueryParam:查询条件决定了方法的作用域,查询参数组成了查询条件。@QueryParam("参数名称") final 参数类型 参数变量
@PathParam:定义路径参数--每个参数对应一个子资源。
@Path:接收一个VALUE参数,来解析资源路径地址,这个VALUE参数即可以是静态定义也可以动态变量的方式,其格式:{参数名称:正则表达式}
例:@GET
@Path("form:\\d+}-{to:\\d+}")
public String getMothed(@PathParam("form") final Integer form,@PathParam("to") final Integer to){.....}
@PathSegment:路径区间,使资源类的一个方法可以支持更广泛的资源地址的请求。@PathSegment类型的参数结合正则表达式发挥的作用更大。对于每一个PathSegment实例,可以调用其getPath方法获取子资源的名称。
例:@GET
@Path("{region:.+}/varvalue/{district:\\w+}")
public String getByAddress(@PathParam("region") final List<PathSegment> region,@PathParam("district") fianl String district){
final StringBuilder result=new StringBuilder();
for (final PathSegment pathSegment:region){
result.append(pathSegment.getPath()).append("-");
}
}
另:对于查询参数动态给定的场景,可以定义PathSegment作为参数类型,通过getMatrixParameters()方法获取MultivaluedMap类型的查询参数信息,即可将参数条件作为一个整体解析。
@FormParam:用来定义表单参数,相应的REST方法用以处理请求实体媒体类型为Content-Type:application/x-www-form-urlencoded的请求。
例:@Path("form-resource")
public class FormResource{
@POST
public String newPassWord(
@DefaultValue("默认值") @FormParam(FormResource.USER) final String user,
@Encoded @FormParam(FormResource.PW) final String password
){ ....... }
}
@BeanParam:用于自定义参数组合,可以使用简洁的参数形式完成复杂的接口设计。
@GET
@Path("{region:.+}/shenyang/{district:\\w+}")
Public String getByAddress(@BeanParam Jaxrs2GuideParam param){
public class Jaxrs2GuideParam{
@HeaderParam("accept") private String acceptparam;
@PathParam("Region") private String regionparam;
@Queryparam("station") private String stationparam;
.....
}
@CookieParam:用以匹配Cookie中的键值对信息。
例:
@CookieParam("Cookie名称") final String Cookie变量名称
@Context:用于解析上下文参数。通过@Context定义的方法的参数或者类的字段用于某些业务逻辑处理中常用的辅助信息的获取。
jersey REST的接口简述的更多相关文章
- 调用jersey发布的接口webservice,通过HttpPost传递文件
项目媒体文件之前都是上传到七牛云处理,现在客户为了安全和私密性,准备将移动端拍摄的图片和视频传递到文件服务器,所以就想办法能不能在服务器端发布一个WebService,供移动端调用.刚好之前做的接口都 ...
- Jersey 写restful接口时QueryParam ,FormParam 等的区别
今天用jersey写接口,发现有一个post方法中没有得到参数,查了半天发现自己一不小心将@formparam写成了@queryparam,真是一个悲伤的故事.在这里把几个参数类型整理了一下放出来. ...
- jersey实现RESTful接口PUT方法JSON数据传递
项目中使用的是org.json包 maven中的配置如下: xml <!-- https://mvnrepository.com/artifact/org.json/json --> &l ...
- Java 接口简述
Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并 ...
- Spring集成Jersey开发(附demo)
下文将会初步介绍如何在Spring中集成Jersey,并附简单的demo 所依赖的技术版本: Jersey 1.8 Spring 3.0.5.RELEASE 1. 项目依赖 pom.xml定义(注意去 ...
- JAVA基础整理-集合篇(一)
集合作为JAVA的基础知识,本来感觉自己理解的很清楚了,但是在最近的一次面试中还是答得不尽如人意!再次做一下整理,以便加深理解以及随时查阅. 首先,java.util包中三个重要的接口及特点:List ...
- JAVA集合差异
接口 简述 实现 操作特性 成员要求 Set 成员不能重复 HashSet 外部无序地遍历成员 成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法. T ...
- Java之集合类
出处:http://blog.csdn.net/zhangerqing 一.集合类简介 数组是很常用的一种的数据结构,我们用它可以满足很多的功能,但是,有时我们会遇到如下这样的问题: 1.我们需要该容 ...
- javase程序设计课后题答案
;第1章 Java概述 编译java application源程序文件将产生相应的字节码文件,这些字节码文件别的扩展名为.java 执行一个java程序fristapp的方法是运行java frist ...
随机推荐
- Android中的Handler的机制与用法详解
概述: 很多android初学者对android 中的handler不是很明白,其实Google参考了Windows的消息处理机制, 在Android系统中实现了一套类似的消息处理机制.在下面介绍ha ...
- 使用logminer分析日志文件
实验环境 win7 64 oracle PL/SQL Release 11.2.0.1.0 - Productionhttp://blog.csdn.net/tianlesoftware/artic ...
- jedis应用实例
最近将redis整合到项目中,将redis作为cache使用,未来进一步作为消息推送使用.我通过jedis和spring配置实现操作redis. spring配置 <!-- redis配置 -- ...
- tcl/tk实例详解——glob使用例解
glob命令 这里以实例的形式解释一下glob命令的用法,很多时候纯粹的语法讲解根本讲不清楚,往往没有一个例子清晰,一下就glob命令进行一些分析,环境为Tclsh85,操作系统为windows XP ...
- C# DataTable转List And List转DataTable
// DataTable转List: IList<HousesEntity> Ilist = TableAndList.ConvertTo<HousesEntity>(dt); ...
- XML序列化/反序列化数据库形式保存和读取。
直接上码: 首先创建class1类 public class Class1 { public string name { get; set; } public int age { get; set; ...
- .net开发---自定义页面打印区域
自定义页面打印区域 有3种办法: 办法一:将不需要打印的部位隐藏掉 Examp: <%-- (1)使用css样式,定义一个.noprint的class,将不打印的内容放入这个class内. -- ...
- sql 常用操作脚本代码
,--运行fy_mh库[use] use fy_mh ,--查询 mh_dblj表 select * from mh_dblj ,--更新 某个字段(把表的某个字段下的所有的数据清空)[update ...
- IOS视图旋转可放大缩小
- (IBAction)hideBut:(id)sender { if (self.flg) { [UIView animateWithDuration:0.3 animations:^{ self. ...
- MIS框架开发计划
计划开发模块 缓存模块 全球化模块(时间转换.货币转换.语言切换.度量转换.时区转换) 用户模块 用户短消息模块 日志模块(系统日志.用户操作日志.安全审计日志) 权限模块 配置模块 事件模块(观察者 ...