java rs 的理解_java restful系列一 认识JAX-RS

1. 什么是JAX-RS

JAX-RS是JAVA EE6 引入的一个新技术。 JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。

目前基于JAX-RS实现的框架包括:

Apache CXF,开源的Web服务框架。

Jersey, 由Sun提供的JAX-RS的参考实现。

RESTEasy,JBoss的实现。

Restlet,由Jerome Louvel和Dave Pawson开发,是最早的REST框架,先于JAX-RS出现。

Apache Wink,一个Apache软件基金会孵化器中的项目,其服务模块实现JAX-RS规范。

JAX-RS有一套标注规范用来简化Web服务的客户端和服务端的开发和部署,后面系列介绍的Apache Wink,Apache CXF都是基于JAX-RS实现的并遵循这套规范的。下面来熟悉下常用的标注用法。

2. JAX-RS常用标注

@Path,标注资源类或者方法的相对路径。

@Produces,标注返回的MIME媒体类型。

@Consumes,标注可接受请求的MIME媒体类型。

@PathParam,@QueryParam,@HeaderParam,@CookieParam,标注方法的参数来自于HTTP请求的不同位置。

@Context,标注注入上下文对象。

@DefaultValue,标注变量赋值默认值。

@Path,标注资源类或者方法的相对路径

@Path("user")

public class UserResource{

@Path("/add")

public Response add(@PathParam("name") String name) {

return Response.ok().build();

}

}

@GET,@PUT,@POST,@DELETE,标注方法是HTTP请求的类型。

@Path("user")

public class UserResource{

@GET

@Path("/add")

public Response add(@PathParam("name") String name) {

return Response.ok().build();

}

}

@Produces,标注返回的MIME媒体类型

@Path("user")

public class UserResource{

@GET

@Path("/add")

@Produces(MediaType.APPLICATION_JSON)

public Response add(@PathParam("name") String name) {

return Response.ok().build();

}

}

@Consumes,标注可接受请求的MIME媒体类型

@Path("user")

public class UserResource{

@GET

@Path("/add")

@Produces(MediaType.APPLICATION_JSON)

@Consumes(MediaType.APPLICATION_JSON)

public Response add(@PathParam("name") String name) {

return Response.ok().build();

}

}

@PathParam, 标注方法的参数来自于URL的路径

@Path("user")

public class UserResource{

@GET

@Path("/add/{name}")

@Produces(MediaType.APPLICATION_JSON)

@Consumes(MediaType.APPLICATION_JSON)

public Response add(@PathParam("name") String name) {

return Response.ok().build();

}

}

URL输入为:http://localhost:8080/user/add/test1

@QueryParam,标注方法的参数来自于URL的查询参数

@Path("user")

public class UserResource{

@GET

@Path("/add")

@Produces(MediaType.APPLICATION_JSON)

@Consumes(MediaType.APPLICATION_JSON)

public Response add(@QueryParam("name") String name) {

return Response.ok().build();

}

}

URL输入为:http://localhost:8080/user/add?name=test1

@HeaderParam, 标注方法的参数来自于HTTP请求的头信息

@Path("user")

public class UserResource{

@GET

@Path("/add")

public Response add(@HeaderParam("user-agent") String userAgent) {

return Response.ok().entity(userAgent).build();

}

}

当访问URL地址http://localhost:8080/user/add的时候,会输出HTTP 头信息,如: Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0

@CookieParam,标注方法的参数来自于HTTP请求的Cookie

@Path("user")

public class UserResource{

@GET

@Path("/add")

public Response add(@CookieParam("name") Cookie cookie) {

return Response.ok().entity(cookie).build();

}

}

当访问URL地址http://localhost:8080/user/add的时候,会输出cookie中key等于name信息

@DefaultValue,标注方法的参数的默认值

@Path("user")

public class UserResource{

@GET

@Path("/add")

public Response add(@DefaultValue("test") String name) {

return Response.ok().build();

}

}

当访问URL地址http://localhost:8080/user/add的时候,name的默认值是test

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值