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

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

 
最近,我正在使用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中,使用它。

RESTful 接口规范的更多相关文章

  1. DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render

    DRF框架    全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...

  2. restful接口规范 | 基于restful的原生django接口

    restful接口规范 接口 接口:联系两个物质的媒介,完成信息交互 web程序中:联系前台页面与后台数据库的媒介 web接口组成: - url:长得像返回数据的url链接 - 请求参数:前台按照指定 ...

  3. drf框架,restful接口规范,源码分析

    复习 """ 1.vue如果控制html 在html中设置挂载点.导入vue.js环境.创建Vue对象与挂载点绑定 2.vue是渐进式js框架 3.vue指令 {{ }} ...

  4. Django(43)restful接口规范

    restful接口规范   什么是接口规范?接口规范就是为了采用不同的后台语言,也能使用同样的接口获取到同样的数据.如何写接口:接口规范是规范化书写接口的,写接口要写url.响应数据 ​  注:如果将 ...

  5. 初识web API接口及Restful接口规范

    一.web API接口 什么是web API接口?: 明确了请求方式,提供对应后台所需参数,请求url链接可以得到后台的响应数据 url : 返回数据的url https://api.map.baid ...

  6. RESTful接口规范

    一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角 ...

  7. Github api【Restful接口规范】

    Overview This describes the resources that make up the official GitHub REST API v3. If you have any ...

  8. DjangoRestFramework 学习之restful规范 APIview 解析器组件 Postman等

    DjangoRestFramework学习一之restful规范.APIview.解析器组件.Postman等 本节目录 一 预备知识 二 restful规范 三 DRF的APIView和解析器组件 ...

  9. day89 DjangoRsetFramework学习---restful规范,解析器组件,Postman等

     DjangoRsetFramework学习---restful规范,解析器组件,Postman等           本节目录 一 预备知识 二 restful规范 三 DRF的APIView和解析 ...

随机推荐

  1. [学习笔记] 七步从AngularJS菜鸟到专家(4和5):指令和表达式 [转]

    这一篇包含了"AngularJS - 七步从菜鸟到专家"系列的第四篇(指令)和第五篇(表达式). 之前的几篇展示了我们应用的核心组件,以及如何设置搭建一个Angular.js应用.在这一部分,我们会厘 ...

  2. upgrade-php-5-1-to-php-5-3-using-yum-on-centos

    wget -q -O - http://www.atomicorp.com/installers/atomic | shyum upgrade phpyum -y remove atomic-rele ...

  3. js全局变量和局部变量

    <script> var i = 'yuanjianhang'; function myloveName() { alert(i); var i = 'guanxi'; } myloveN ...

  4. 理解em,rem以及rem的失效问题

    在平常做网站写代码的时候一般都是使用px,在之前的学习时就略微的学习了一些关于em.rem的知识,但是由于一直没有用到过,所以几乎全部忘记了.今天在研究一些知识的时候用到了em,所以特意将学到的知识总 ...

  5. Kafka在Centos6.4中的集群搭建

    环境要求:三台装有Centos6.4的虚拟机,需要有java1.7以上的环境,需要ZooKeeper环境. 1)从Kafka官网下载Kafka安装包 下载Kafka 2)解压安装包 tar -xzf ...

  6. 查看mssql的锁

    USE [master]GO /****** Object: StoredProcedure [dbo].[sp_who_lock] Script Date: 10/02/2014 06:18:19 ...

  7. [数据结构] N皇后问题

    代码: #include <iostream> #include <string.h> #include <algorithm> using namespace s ...

  8. python import 模块异常问题

    新项目开始了,(tornado,python) 结果出现了一个比较诡异的问题. import 自己的在conf文件夹下配置文件settings的时候, from conf.settings impor ...

  9. 嵌入式linux自动登录

    最近又把同事的fl2440板子拿过来跑了起来,没有太大收获,就解决了一个自动登录的问题: ::respawn:/sbin/getty -L ttySAC0 115200 vt100 -n root - ...

  10. [原] XAF ListView显示隐藏Footer菜单

    using System; using DevExpress.ExpressApp; using DevExpress.ExpressApp.Win.Editors; using DevExpress ...