开发 RESTful Web 服务常用的注解有哪些

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`

在Java中开发RESTful Web服务时,我们通常使用JAX-RS API,它定义了一组注解来创建Web服务。以下是一些最常用的注解:

@Path

这个注解用于定义资源类或方法的相对路径。例如:

@Path("/users")
public class UserResource {
    // ...
}

在这个例子中,UserResource 类的所有方法都将对应于URL中 /users 的路径。

@GET, @POST, @PUT, @DELETE

这些注解分别对应于HTTP协议中的GET, POST, PUT, DELETE方法。它们用于指示方法该如何响应HTTP请求。例如:

@GET
@Path("/{userId}")
public Response getUserById(@PathParam("userId") String userId) {
    // ...
}

在这个例子中,getUserById 方法将响应对 /users/{userId} 的GET请求。

@Produces

该注解用于指定方法生成的MIME媒体类型。例如,返回JSON格式数据的方法可以这样写:

@Produces(MediaType.APPLICATION_JSON)
public Response getUser() {
    // ...
}

@Consumes

@Produces 相对,@Consumes 注解指定方法可以接受的MIME媒体类型的请求体。例如:

@Consumes(MediaType.APPLICATION_JSON)
public Response createUser(User user) {
    // ...
}

@PathParam, @QueryParam, @HeaderParam, @FormParam

这些注解用于从HTTP请求中提取不同类型的参数。

  • @PathParam 从URL路径中提取参数。

  • @QueryParam 从查询参数中提取参数。

  • @HeaderParam 从HTTP头中提取参数。

  • @FormParam 从表单数据中提取参数。

例如:

@GET
@Path("/{userId}")
public Response getUserById(@PathParam("userId") String userId) {
    // ...
}

@GET
public Response getUserByName(@QueryParam("name") String name) {
    // ...
}

getUserById 方法中,userId 参数的值来自于URL路径。而在 getUserByName 中,name 参数的值来自查询参数。

这些是开发RESTful Web服务时使用的一些核心注解,但JAX-RS还提供了其他一些注解来支持更复杂的功能和配置。

最后更新于