@GET:该注解标记的方法表明用于处理GET请求,GET方法是幂等且安全的。
@POST:该注解标记的方法表明处理POST请求,POST方法表明是一种创建操作的方法,POST方法是一种写操作的HTTP请求,RPC中的写操作均是使用post方法,而在REST中我们只是使用POST方法来添加资源。
@DELETE:该注解标记的方法表明这个方法执行的是一个删除资源的操作,其返回值可以是void,即没有返回值。
@Consumes:在服务器端,@Consumes(MediaType.APPLICATION_XML)定义了服务器端要消费的媒体类型,也就是说消费客户端请求实体的媒体类型,可以是xml、json等类型。
@Produces:@Consumes(MediaType.APPLICATION_XML)定义了服务器端生产的媒体类型,即服务器端产生的响应实体的媒体类型,同样也可以是xml、json等媒体类型。
@Path:该注解可以标记在类名之上,也可以标记在方法名上。该注解接收一个value参数,表示定义资源的地址。另外,资源地址相同,但是HTTP方法不同的两个方法是完全两个不同的REST接口,HTTP方法和资源地址相结合在一起才可以完成对一个资源的定位。
package com.zte.ems.resource; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.core.Context; import org.springframework.stereotype.Component; @Component @Path("/weclome") public class JerseyResource { @GET @Path("/wrong") public void getPage(@Context HttpServletRequest request) { System.out.println("这是一个get方法!"); } @POST @Path("/wrong") public void postPage(@Context HttpServletRequest request) { System.out.println("这是一个post方法!"); } }
以上面这个类为例,虽然@Path的组合是"/weclome/wrong",但是由于HTTP方法不同,因此,执行的方法体也是不同的。
@QueryParam:该注解表明是一个查询条件,查询条件决定了方法的作用域,查询参数组成了查询条件。Jersey中使用@QueryParam注解来定义查询参数。另外注解@QueryParam还可以和注解@DefaultVaule一起使用,注解@DefaultValue的作用则是预置一个默认值,当请求中不包括该参数时候使用这个默认值。
@PathParam:该注解定义路径的参数信息,每一个参数都对应一个子资源。
@FormParam:该注解表示用来定义表单的参数。
@Context:该注解用来解析上下文参数。(@Context HttpRequest request)