程序员人生 网站导航

JAX-RS规范-常用注解浅析

栏目:框架设计时间:2015-02-10 08:17:54

1、@Path

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

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

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

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

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

 

2、@Method

(1)1个方法上只有添加了某个Http Method的annotation,例如@GET,才有资格处理要求。

(2)对资源的具体操作类型,由HTTP动词表示。

经常使用的HTTP动词有下面5个(括号里是对应的SQL命令)。

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

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

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

下面是1些例子。

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


3:Accept和Content-Type的区分

    Accept就表示接口要返回给客户真个数据格式,
    Content-Type表示客户端发送给服务器真个数据格式。这个是写REST接口时候定义的 
    正常如果服务器没定义Accept但是自己添加了的话 会报404 没找到对应接口。


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

        有几种格式以下:

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

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

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

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

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


5:@Consumes 代表的是1个资源可以接受的 MIME 类型。

       @Consumes 注释针对 Content-Type 要求头进行匹配,以决定方法是不是能接受给定要求的内容。

 

6:@Queryparam与@Pathparam区分

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

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

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

例如: /users/100 



 

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐