RESTful 接口规范

原文地址:http://www.coderli.com/translate-restful-standard-resolvedjava

 

OneCoder最近一直在使用Restful API,最近正好看到一篇自定义restful接口规范的“抛砖引玉”得的文章,索性翻译一下,与你们分享。web

 
最近,我正在使用RESTfull的方式构建一个web服务。尽管如今有不少的通常的指导和提示告诉你如何定义restful接口,可是却没有一个明确的标准或你们都接受的schema定义去遵循。
 
在网上获取了一些信息后,我打算打破这一局面:)我打算分享一下我定义的规则和结构,而且很但愿能获得一些反馈来帮助我完善这个规则,因此,不要犹豫,请毫无留情给我指出错误和毛病吧。
 
高级别的模式是:
http(s)://server.com/app-name/{version}/{domain}/{rest-convention}
 
这里,{version}表明api的版本信息。{domain}是一个你能够用来定义任何技术的区域(例如:安全-容许指定的用户能够访问这个区域。)或者业务上的缘由。(例如:一样的功能在同一个前缀之下。)
 
{rest-convention} 表明这个域(domain)下,约定的rest接口集合。
 
单资源( singular-resourceX )
url样例:order/  (order即指那个单独的资源X)
  • GET – 返回一个新的order
  • POST- 建立一个新的order,从post请求携带的内容获取值。
 
单资源带id(singular-resourceX/{id} )
URL样例:order/1 ( order即指那个单独的资源X )
  • GET – 返回id是1的order
  • DELETE – 删除id是1的order
  • PUT – 更新id是1的order,order的值从请求的内容体中获取。
 
复数资源(plural-resourceX/)
URL样例:orders/
  • GET – 返回全部orders
 
复数资源查找(plural-resourceX/search)
URL样例:orders/search?name=123
  • GET – 返回全部知足查询条件的order资源。(实例查询,无关联) – order名字等于123的。
 
复数资源查找(plural-resourceX/searchByXXX)
URL样例:orders/searchByItems?name=ipad
  • GET – 将返回全部知足自定义查询的orders – 获取全部与items名字是ipad相关联的orders。
 
单数资源(singular-resourceX/{id}/pluralY)
URL样例:order/1/items/ (这里order即为资源X,items是复数资源Y)
  • GET – 将返回全部与order id 是1关联的items。
 
singular-resourceX/{id}/singular-resourceY/
URL样例:order/1/item/
  • GET – 返回一个瞬时的新的与order id是1关联的item实例。
  • POST – 建立一个与order id 是1关联的item实例。Item的值从post请求体中获取。
 
singular-resourceX/{id}/singular-resourceY/{id}/singular-resourceZ/
URL样例:order/1/item/2/package/
  • GET – 返回一个瞬时的新的与item2和order1关联的package实例。
  • POST – 建立一个新的与item 2和order1关联的package实例,package的值从post请求体中得到。
 
上面的规则能够在继续递归下去,而且复数资源后面永远不会再跟随负数资源。
总结几个关键点,来更清晰的表述规则。
  • 在使用复数资源的时候,返回的是最后一个复数资源使用的实例。
  • 在使用单个资源的时候,返回的是最后一个可是资源使用的实例。
  • 查询的时候,返回的是最后一个复数实体使用的实例(们)。
但愿你的关注能帮助我完整这个结构并解决你可能偶然遇到的问题。
 
在下一篇文章里,在这个结构完善以后,我将会一些技术上的样例如何在Spring MVC3.1中,使用它。
相关文章
相关标签/搜索