一、@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

最新文章

  1. Travis CI用来持续集成你的项目
  2. maven:用appassembler-maven-plugin打包含有自定义目录的JAVA程序
  3. linux下根据进程名字获取PID,类似pidof(转)
  4. 《BI那点儿事》数据挖掘各类算法——准确性验证
  5. 设计模式之桥接模式(Bridge)
  6. JavaScript eval() Function
  7. python运维开发(二十)----models操作、中间件、缓存、信号、分页
  8. MAX Average Problem(斜率优化dp)
  9. Archive for required library: ‘WebContent/WEB-INF/lib/xxx.jar cannot&n
  10. 《转》Linux下的多线程编程
  11. JS数组及内置对象
  12. Interlocked原子函数陷阱
  13. Spring3实战第二章第一小节 Spring bean的初始化和销毁三种方式及优先级
  14. 字符串相似度-C#
  15. python while 循环语句
  16. 前端js总结
  17. emoji
  18. 操作cookie篇
  19. Mac怎么安装并配置Homebrew?
  20. C语言简明数据类型指南

热门文章

  1. 利用django创建一个投票网站(二)
  2. 总结libevent安装方法
  3. SharePoint Online 申请试用链接地址
  4. oracle用户创建
  5. oracle临时表空间操作
  6. ORACLE 常见错误
  7. beaglebone black 安装QNX过程
  8. Linux学习之九--mysql的简单使用
  9. Linux学习之五--常用操作
  10. CNN车型分类总结