jersey REST的接口简述

时间:2023-11-10 22:32:56

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定义的方法的参数或者类的字段用于某些业务逻辑处理中常用的辅助信息的获取。