JAX_RS

一、@Path

  若希望一个Java类能够处理REST请求,则这个类必须至少添加一个@Path("/")的annotation;

  对于方法,这个annotation是可选的,如果不添加,则继承类的定义。

(1)@Path里的值可以是一个复杂的表达式,例如@Path("{id}") ,其中 {id}表达式代码了一个模板参数;

         一个模板参数是一个定义在@Path里的通配符,它以 { 开始,中间是一堆字母和数字的混合串(不能包含 / 字符),以 } 结尾。又如: @Path("{firstName}-{lastName}") .

(2)@Path也支持正则表达式,例如: @Path("{id: \\d+}") ,其中 \\d+ 表示一个数字。格式为: A : B

 
 
二、@Method

(1)一个方法上只有添加了某个Http Method的annotation,例如@GET,才有资格处理请求。
(2)对于资源的具体操作类型,由HTTP动词表示。 
常用的HTTP动词有下面五个(括号里是对应的SQL命令)。

◾ GET(SELECT):从服务器取出资源(一项或多项)。
◾ POST(CREATE):在服务器新建一个资源。
◾ PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
◾ PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
◾ DELETE(DELETE):从服务器删除资源。

还有两个不常用的HTTP动词。

◾ HEAD:获取资源的元数据。
◾ OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

下面是一些例子。

◾ GET /zoos:列出所有动物园
◾ POST /zoos:新建一个动物园
◾ GET /zoos/ID:获取某个指定动物园的信息
◾ PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
◾ PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
◾ DELETE /zoos/ID:删除某个动物园
◾ GET /zoos/ID/animals:列出某个指定动物园的所有动物
◾ DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物




三:Accept和Content-Type的区别


    Accept就表示接口要返回给客户端的数据格式,


    Content-Type表示客户端发送给服务器端的数据格式。这个是写REST接口时候定义的 

    正常如果服务器没定义Accept但是自己添加了的话 会报404 没找到对应接口。

 




四:@Produces 表示类或者方法返回的MIME数据类型。

        有几种格式如下:

(1)@Produces("text/plain") 文本类型

(2)@Produces("text/html")  Html类型

(3)@Produces({"application/xml"}) Xml类型

        (4)@Produces({ "application/json"}) Json类型

       可以一次注解两种或多种的MIME类型,格式如:{"application/xml", "application/json"}这表示两者都可以使用,但是选择的时候一般会选择前者,即application/xml,因为它第一次出现。





五:@Consumes 代表的是一个资源可以接受的 MIME 类型。
       @Consumes 注释针对 Content-Type 请求头进行匹配,以决定方法是否能接受给定请求的内容。
 
 

六:@Queryparam与@Pathparam区别

@Queryparam:指定的是URL中的参数是以键值对的形式出现的,而在程序中 @QueryParam("from")  int from则读出URL中from的值, 


例如:URL输入为:users?from=100&to=200&orderBy=age&orderBy=name 

@Pathparam:URL中只出现参数的值,不出现键值对

例如: /users/100 




注解

描述

@Path @Path注解的值是一个相对的URI路径,这个路径指定了该Java类的位置,例如/helloworld。在这个URI中可以包含变量,例如可以获取用户的姓名然后作为参数传入URI中:/helloworld/{username}
@GET @GET注解是请求方法指示符,这个指示符注解的Java方法会处理HTTPGET请求。资源的行为由资源回应的HTTP方法决定。
@POST @POST注解是请求方法指示符,这个指示符注解的Java方法会处理HTTPPOST请求。资源的行为由资源回应的HTTP方法决定。
@PUT @PUT注解是请求方法指示符,这个指示符注解的Java方法会处理HTTPPUT请求。资源的行为由资源回应的HTTP方法决定。
@DELETE @DELETE注解是请求方法指示符,这个指示符注解的Java方法会处理HTTPDELETE请求。资源的行为由资源回应的HTTP方法决定。
@HEAD @HEAD注解是请求方法指示符,这个指示符注解的Java方法会处理HTTPHEAD请求。资源的行为由资源回应的HTTP方法决定。
@PathParam @PathParam注解是可以抽取并用在资源类中的一类参数。URIpath参数是从请求的URI中抽取的,而且参数的名称和@Path注解中定义的变量名对应。
@QueryParam @QueryParam注解是可以抽取并在资源类中使用的一类参数。Query参数是从请求URI的查询参数中抽取的。
@Consumes @Consumes注解是用来指定资源能够接受的客户发送的MIME媒体类型。
@Produces @Produces注解用来指定资源能够生成并发送给客户端的MIME媒体类型,例如“text/plain.
@Provider @Provider注解用在任何对JAX-RS运行时(如MessageBodyReaderMessageBodyWriter)有意义的事物上。对HTTP请求,MessageBodyReader用来将HTTP请求实体段映射为方法参数。在响应的时候,返回的值使用MessageBodyWriter来映射成HTTP响应实体段。如果应用程序需要提供其他的元数据,如HTTP头或不同的状态代码,方法可以返回一个打包了实体的Response,该Response可以使用Response.ResponseBuilder创建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值