📜  Jax-RS 路径注释 - Java (1)

📅  最后修改于: 2023-12-03 14:43:05.145000             🧑  作者: Mango

Jax-RS 路径注释 - Java

什么是Jax-RS?

Jax-RS(Java API for RESTful Web Services)是Java EE平台中的一项标准,提供了一组API用于创建RESTful Web服务。在Jax-RS中,RESTful服务是通过HTTP协议进行通信的。

Jax-RS路径注释

在Jax-RS中,路径注释可以帮助我们指定RESTful服务的URL路径。Jax-RS可以通过@Path注释来指定HTTP方法(如GET,POST等)的URL路径。下面来看一个示例:

@Path("/users")
public class UserResource {
 
    @GET
    @Path("/{id}")
    public User getUserById(@PathParam("id") Long id) {
        // 根据用户ID获取用户信息
    }
     
    @POST
    public Response createUser(User user) {
        // 创建用户
    }
     
    @PUT
    @Path("/{id}")
    public Response updateUser(@PathParam("id") Long id, User user) {
        // 更新用户信息
    }
     
    @DELETE
    @Path("/{id}")
    public Response deleteUser(@PathParam("id") Long id) {
        // 根据用户ID删除用户
    }
}

上面的示例中,@Path注释表示UserResource类的根访问路径。@Path("/{id}")注释表示getUserById,updateUser和deleteUser方法的URL路径。@PathParam注释表示注入到方法参数中的路径参数(在这里是id)。

路径参数

可以通过使用@{param}来在URL路径中指定路径参数。这些路径参数通过@PathParam注释注入到方法参数中。例如:

@Path("/products")
public class ProductResource {
 
    @GET
    @Path("/{id}")
    public Product getProductById(@PathParam("id") Long id) {
        // 根据产品ID获取产品信息
    }
     
    @GET
    @Path("/category/{category}")
    public List<Product> getProductsByCategory(@PathParam("category") String category) {
        // 根据产品类别获取所有产品
    }
}

上面的示例中,@Path("/{id}")表示getProductById方法将接受一个名为id的路径参数。类似地,@Path("/category/{category}")表示getProductsByCategory方法将接受一个名为category的路径参数。

完整的URL路径

在Jax-RS中,可以使用@Context注释的UriInfo获取完整的URL路径。例如:

@Path("/users")
public class UserResource {
 
    @GET
    @Path("/{id}")
    public User getUserById(@PathParam("id") Long id, @Context UriInfo uriInfo) {
        // 获取完整的URL路径
        String url = uriInfo.getAbsolutePath().toString();
        // 根据用户ID获取用户信息
    }
}

在上面的示例中,@Context注释的UriInfo可以为getUserById方法提供完整的URL路径。

总结

Jax-RS路径注释是创建RESTful服务的重要组成部分。使用@Path和@PathParam注释,可以轻松地指定RESTful服务的URL路径和路径参数。同时,使用@Context注释的UriInfo可以获取完整的URL路径。