JAX-RS基本概念理解

本文介绍了JAX-RS的基本概念,包括Root Resource Classes、HTTP方法、@Path、@Produces和@Consumes注解,以及参数注解如@QueryParam和@MatrixParam等。详细阐述了资源类的生命周期、子资源、注入规则和@Context的使用,旨在帮助读者深入理解RESTful服务的构建。
摘要由CSDN通过智能技术生成

JAX-RS,全称为Java API for RESTful Web Services.的核心概念是resource,即面向资源。

JAX-RS的JavaDoc可以在这里找到。
JAX-RS的标准可以在这里找到。

1. Root Resource Classes

满足下列2个条件的POJO类被称为Root Resource Class:

  • 使用@Path注解
  • 至少有一个方法使用@Path或者资源方法注解(如@GET,@DELETE)

下面的HelloworldResource就是这样一样例子:

import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("helloworld") // 条件1
public class HelloWorldResource {
   
    public static final String CLICHED_MESSAGE = "Hello World!";

    @GET // 条件2
    @Produces("text/plain")
    public String getHello() {
        return CLICHED_MESSAGE;
    }
}
1.1. @Path

@Path注解的值是一个相对的URI路径。@Path的有没有/开头是一样的,同理,结尾有没有包含/也是一样的。上面例子中的/helloworld是最简单的一个例子,但是JAX-RS允许我们在路径中嵌入各种变量。

路径模板在路径中嵌入了以{}包含的变量,这个变量在运行时(资源被请求时)替换成实际的值。例如:

@Path("/users/{username}")

参数的实际值在资源方法中使用@PathParam提取:

@Path("/users/{username}")
public class UserResource{
   
    @GET
    @Produces("text/xml")
    public String getUser(@PathParam("username") String username){
        ...
    }
}

我们还可以对模板参数的格式做约束,例如我们只允许大小写字符以及数字,则可以使用下面的正则表达式来限制模板参数:

@Path("users/{username: [a-zA-z_0-9]*}")

如果请求路径不符合要求,将会返回404.

1.2 @GET, @PUT, @POST, @DELETE, … (HTTP Methods)

@GET, @PUT, @POST, @DELETE, @HEAD这些注解称为resource method designator,与HTTP规范中定义的方法一致。这些方法决定资源的行为。

1.3 @Produce

@Produce注解指定返回给客户端的MIME媒体类型。可以用于注解类或者注解方法。

@Path("/myResource")
@Produces("text/plain")
public class SomeResource {
   
    @GET
    public String doGetAsPlainText() {
        ...
    }

    @GET
    @Produces("text/html")
    public String doGetAsHtml() {
        ...
    }
}

如果类中的方法没有指定,则默认使用类级别的@Produce值。@Produce注解可以指定多个值,同时可以指定quality factor:

@GET
@Produces({
  "application/xml; qs=0.9", "application/json"})
public String doGetAsXmlOrJson() {
    ...
}
@Consumes

该注解用于指定可以接受的客户端请求的MIME媒体类型:

@POST
@Consumes("text/plain")
public void postClichedMessage(String message) {
    // Store
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值