Restful API 本文简称API,是一个种面向资源的架构。在Restful中一个API对应一个资源,资源可以是文本,图片,视频等。API特征有如下:

  • 每一个URI代表一种资源
  • 客户端和服务器之间,传递这种资源的某种表现层
  • 客户端通过HTTP动词,对服务器端资源进行操作,实现表现层状态转化

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

常用的HTTP动词有下面五个(括号里是对应的SQL命令)另外有两个不常用。

GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
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:删除某个指定动物园的指定动物

API 设计黄金法则

对API格式的决定有疑问,黄金规则可以帮助我们做出正确的决定:

  • 扁平比嵌套好
  • 简单胜于复杂
  • 字符串比数字好
  • 一致性比定制更好

最佳实践

URL命名规则

  • URL请求采用小写字母,数字,部分特殊符号组成
  • URL请求中不采用大小写混合的驼峰命名方式,尽量采用全小写单词
  • 如果需要连接多个单词,则采用连接符短横"-"或下划线"_"连接单词,且保持风格统一

根据返回资源定义URL

  • 获取单数的集合使用单数名词
  • 获取复数的集合使用复数的名词 不推荐:GET /user 推荐:GET /users

URL以集合开始,以标识符结束

URL标识一种资源,所以规范的URL是以集合开始以ID结束

不推荐:GET /category/:categoryId/price 推荐:GET /category/:categoryId

URL中不添加动作

不要在URL中使用动词来表达你的意图。相反,使用适当的HTTP方法来描述操作。

不推荐:POST /updateuser/{userId} GET /getusers

推荐:PUT /user/{userId}

不使用表名做URL

不要只使用表名作为资源名。从长远来看,这种懒惰是有害的,这是因为表名会公开底层体系结构。

不推荐:product_order 推荐:product-orders

使用版本号

建议在 URL 中包含 API 的版本号。

https://example.com/api/v1/... <-- 第一版 API

https://example.com/api/v2/... <-- 第二版 API

好处是:1. API 升级不影响调用方的代码,2. 升级后的 API 可以不向前兼容。

对非资源URL使用动词

如果你有一个端点,它只返回一个操作。在这种情况下,你可以使用动词。例如,如果你想要向用户重新发送警报。推荐:POST /alarm/245743/resend

API 设计最佳实践(简版)的更多相关文章

  1. RESTful API 设计最佳实践

    背景 目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个"万能"的设计标准:如何鉴权?API ...

  2. ****RESTful API 设计最佳实践(APP后端API设计参考典范)

    http://blog.jobbole.com/41233/ 背景 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而 ...

  3. RESTful API 设计最佳实践(转)

    摘要:目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API格式如何?你的API ...

  4. RESTful API 设计最佳实践(转)

    背景 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API 格式如何?你的 ...

  5. RESTful API 设计最佳实践【转】

    背景 目前互联网上充斥着大量的关于RESTful API(为了方便,后面API和RESTful API 一个意思)如何设计的文章,然而却没有一个“万能”的设计标准:如何鉴权?API格式如何?你的API ...

  6. RESTful API 设计指南,RESTful API 设计最佳实践

    RESTful API 设计指南,RESTful API 设计最佳实践 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). ...

  7. 来自Google资深工程师的API设计最佳实践

    来自Google资深工程师Joshua Bloch的分享:API设计最佳实践 为什么API设计如此重要?API是一个公司最重要的资产. 为什么API的设计对程序员如此重要? API一旦发布,出于兼容性 ...

  8. (转)RESTful API 设计最佳实践

    原文:http://www.oschina.net/translate/best-practices-for-a-pragmatic-restful-api 数据模型已经稳定,接下来你可能需要为web ...

  9. [转] 阿里研究员谷朴:API 设计最佳实践的思考

    API是软件系统的核心,而软件系统的复杂度Complexity是大规模软件系统能否成功最重要的因素.但复杂度Complexity并非某一个单独的问题能完全败坏的,而是在系统设计尤其是API设计层面很多 ...

  10. atitit.基于http json api 接口设计 最佳实践 总结o7

    atitit.基于http  json  api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...

随机推荐

  1. shopify本地开发 新的地方

    看了一些教程有些旧地方通不过,自己摸索下 1.创建app 点击Settings,再点击Apps and sales channels 点Allow custom app development 继续 ...

  2. 通过Spring MVC 实现 Restful 风格请求⽀持

    通过Spring MVC可以很方便地实现Restful风格的请求支持.Restful风格的请求是一种基于HTTP协议的轻量级的Web服务架构风格,它通过HTTP的GET.POST.PUT.DELETE ...

  3. Vue07-Axios

    Axios axios是一个网络请求相关的库. axios: ajax i/o system 使用axios编写的网络请求代码,可以运行在浏览器端,也可以在Node环境中运行. 01. 支持的请求方式 ...

  4. 【Javaweb】implements Serializable是什么意思?反序列化是什么意思?

    为了保证数据传输的可靠 性,常常要implements Serializable,为什么? 对象本质上是虚无缥缈的,只是内存中的一个地址,如果想要让对象持久化,让对象在网络上传输,总不可能传送一个内存 ...

  5. 洛谷4159 [SCOI2009] 迷路(矩阵快速幂,拆点)

    题意:该有向图有 n 个节点,节点从 1至 n 编号,windy 从节点 1 出发,他必须恰好在 t 时刻到达节点 n.现在给出该有向图,你能告诉 windy 总共有多少种不同的路径吗?答案对2009 ...

  6. dev-c++ 使用教程

    Dev C++ 支持单个源文件的编译,如果你的程序只有一个源文件(初学者基本都是在单个源文件下编写代码),那么不用创建项目,直接运行就可以:如果有多个源文件,才需要创建项目. 一.新建源文件 1.通过 ...

  7. 机器学习-ROC曲线:技术解析与实战应用

    本文全面探讨了ROC曲线(Receiver Operating Characteristic Curve)的重要性和应用,从其历史背景.数学基础到Python实现以及关键评价指标.文章旨在提供一个深刻 ...

  8. 在Winform应用中增加通用的业务编码规则生成

    在我们很多应用系统中,往往都需要根据实际情况生成一些编码规则,如订单号.入库单号.出库单号.退货单号等等,我们有时候根据规则自行增加一个函数来生成处理,不过我们仔细观察后,发现它们的编码规则有很大的共 ...

  9. AgileConfig 1.8.0 已适配 .NET8

    Hello 大家好.本月圈子里最大的事莫过于 .NET8 正式 release.群友们都在适配 .NET8.抽个周末我也把 AgileConfig 升级到了 .NET8.下面把升级的过程简单记录一下, ...

  10. 一篇文章带你掌握性能测试工具——Jmeter

    一篇文章带你掌握性能测试工具--Jmeter 在目前的中大型企业中,仅仅进行功能测试已经不足以满足企业的需求,在重大客户基数下性能测试将会直接影响到用户体验 所以在这篇文章中我们将会学习性能测试的相关 ...