原文地址: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. 20145321 Git的安装使用及今后学习规划

    20145321 Git的安装使用及今后学习规划 Git安装使用及解决遇到的问题 之前上传代码都没有按照老师的方法弄,当时看到git教程感觉很麻烦,于是都是写完之后再一个个 程序贴上去,而现在使用过后 ...

  2. PHP中的 extends与implements 区别 [转]

    extends 是继承某个类 继承之后可以使用父类的方法 也可以重写父类的方法 implements 是实现多个接口 接口的方法一般为空的 必须重写才能使用 extends是继承父类,只要那个类不是声 ...

  3. Form居中显示

    (1)居中显示 Form1->Position = poScreenCenter; (2)无边框显示 Form1->BorderStyle = bsNone; (3)显示透明性 Form1 ...

  4. Android 如何制造低内存环境

    我们在复现问题的时候有时需要低内存的环境,此时我们可以在有root的手机中,往 /mnt/obb 目录下 push 文件,直到满足需要. 原理:/mnt/obb目录下挂载的是tmpfs文件系统,该文件 ...

  5. Python 2 —— 基本数据类型及其运算

    基本运算 一.数字 **表示乘方运算 12 / 3 = 4.0浮点数 12 // 3 = 4整数 二.字符串 1.表示 单行:'...'或者"..." 多行:'''...'''或者 ...

  6. PowerDesigner增强

    把注释显示出来 选定编辑的表,右键- >Properties- >Columns- >Customize Columns and Filter(或直接用快捷键Ctrl+U)- > ...

  7. 关于 pgsql 数据库json几个函数用法的效率测试

    关于 pgsql 数据库json几个函数用法的效率测试 关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次 ...

  8. What's New in C# 6.0

    Static Types as using So, we are all quite familiar with this notion of accessing static class membe ...

  9. 【原创】Windows Server 文件夹权限小问题

    服务器:Windows Server 2008 R2 Standard 做文件服务器 问题:在资源管理器里给账号设置了R/W权限,但是一直有问题,写失败. 解决:需要在server manager-r ...

  10. 实验三 组合逻辑电路的VHDL设计

    一.实验目的 熟悉QuartusⅡ的VHDL文本设计过程,学习简单组合逻辑电路的设计.仿真和测试方法. 二.实验内容 1. 基本命题 完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测 ...