JAX-RS(Java API for RESTful Web Services)常用注解

概述

常用注解

1、请求路径

@Path:用来标注资源类或者方法的URI路径,URI路径模板是URI语法中嵌入的变量的URI。这些变量在运行时被替换,以便资源对基于被替换的URI的请求作出响应,变量用花括号”{}”表示,如:@Path(“/users/{username}”)。

URI路径模板还支持正则表达式,如:@Path(“users/{username: [a-zA-Z][a-zA-Z_0-9]*}”)

2、Http请求类型

@GET@PUT,@POST,@DELETE

这四个注解标注方法是HTTP请求的类型,分别对应 4 种 HTTP 方法,用于对资源进行创建、检索、更新和删除的操作。

3、返回和接收的MIME媒体类型

(1)@Produces:标注在资源类的方法上,表示返回的MIME媒体类型

如:@Produces(MediaType.APPLICATION_JSON)

(2)@Consumes:标注在资源类的方法上,表示可接受请求的MIME媒体类型

如:@Consumes(MediaType.APPLICATION_XML)

4、Http请求参数处理相关注解

这些注解用来标注方法的参数来自于HTTP请求的不同位置

(1)@PathParam:绑定@path中的url参数到@PathParam标注的方法参数中

@Component
@Path("userMgr")
public class UserMgrResource {
    @GET
    @Path("/getUserById/{id}/{name}")
    public String getUserInfoId(@PathParam("id") int id,
                                @PathParam("name") String name) {
        return "Receive name is:" + name + ",id is:" + id;
    }
}

URI Pattern : /userMgr/getUserById/100/feinik

返回: Receive name is:feinik,id is:100

(2)@QueryParam:绑定Http请求参数到资源类的方法参数中

@GET
@Path("getUserByName")
public String getUserInfo(@QueryParam("name") String name) {
    return "Receive name is:" + name;
}

URI Pattern : /userMgr/getUserByName?name=feinik

返回: Receive name is:feinik

(3)@QueryParam: 注解还可以配合 @DefaultValue 注解来使用,当@QueryParam注解的方法参数没有传递时,默认使用@DefaultValue中的默认值,可防止Null空值。

@GET
@Path("getUserByName")
public String getUserInfo(@DefaultValue("fei")@QueryParam("name") String name) {
    return "Receive name is:" + name;
}

URI Pattern : /userMgr/getUserByName

返回: Receive name is:fei

(4)@HeaderParam: 绑定Http请求header头中的参数到资源类的方法参数中

@GET
@Path("getHeader")
public String getHeader(@HeaderParam(HttpHeaders.CONTENT_TYPE) String contentType) {
    return "Receive header contentType is:" + contentType;
}

(5)@CookieParam: 绑定Http请求的cookie参数到资源类的方法参数中

@GET
@Path("getCookie")
public String getCookie(@CookieParam("sessionId") String sessionId) {
    return "Receive header sessionId is:" + sessionId;
}

(6)@MatrixParam: 绑定url中的参数到资源类的方法参数中,如:URL:/getMatrix;name=feinik,Matrix参数是name=feinik,在URL中以‘;’分割

@GET
@Path("getMatrix")
public String getMatrix(@MatrixParam("name") String name,
                        @MatrixParam("address") String address) {
    return "Receive name is:" + name + ", address is:" + address;
}

URI Pattern : /userMgr/getMatrix;name=feinik;address=北京

返回: Receive name is:feinik, address is:北京

(7)@FormParam: 绑定HTML中的表单参数到资源类的方法参数中

(8)@Context:  注入辅助对象或信息对象,如 HttpServletRequest,ServletContext 等

@GET
@Path("testContext")
public String getMatrix(@Context HttpServletRequest request) {
    return "Context path is:" + request.getContextPath();
}

作者:FEINIK

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
当我们在开发RESTful服务时,经常需要对接口参数进行校验,以确保接口的输入数据符合业务要求。@Validated 是Spring框架中的一个注解,它可以结合JAX-RS中的@Valid 注解,实现对RESTful服务接口对象参数的校验。下面是一个详细的示例: 假设我们有一个RESTful服务接口,用于创建用户账号,接口定义如下: ``` @Path("/users") public class UserResource { @POST @Path("/") public Response createUser(@Valid User user) { // 处理创建用户账号的业务逻辑 } } ``` 上述代码中,@POST 和 @Path("/") 注解表示该接口可以处理HTTP POST请求以及URI路径为 /users 的HTTP请求。@Valid 注解表示需要对 User 参数进行校验,但是默认情况下,该注解会对 User 对象中的所有属性进行校验,如果我们只需要对某些属性进行校验,可以使用@Validated 注解进行分组校验。例如,我们可以定义一个名为CreateUserGroup的分组,用于校验创建用户时必填的属性,例如用户名和密码: ``` public interface CreateUserGroup { // 分组校验标识接口 } ``` 接着,在User类中使用@NotNull 和 @NotBlank 注解,标记用户名和密码属性必填: ``` public class User { @NotNull(groups = {CreateUserGroup.class}) private String username; @NotNull(groups = {CreateUserGroup.class}) @NotBlank(groups = {CreateUserGroup.class}) private String password; // 其他属性和方法省略 } ``` 最后,在 createUser() 方法中使用@Validated 注解,标记需要进行分组校验的分组名称: ``` @Path("/users") public class UserResource { @POST @Path("/") public Response createUser(@Validated(CreateUserGroup.class) User user) { // 处理创建用户账号的业务逻辑 } } ``` 上述代码中,@Validated(CreateUserGroup.class) 注解表示对 User 对象进行 CreateUserGroup 分组校验。这样,在调用 createUser() 方法时,就只会对用户名和密码进行校验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枏树

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值