其他分享
首页 > 其他分享> > RESTful 规范

RESTful 规范

作者:互联网

restful API规范(建议)

域名

应该尽量将API部署在专用域名之下

https://api.example.com

如果API很简单,不会有进一步扩展,可以考虑放在主域名下

https://example.org/api/


版本

应该将API的版本号放入URL

http://www.example.com/app/1.0/foo

http://www.example.com/app/1.1/foo

http://www.example.com/app/2.0/foo

另一种做法是将版本号放入HTTP头信息里,这样不如放入URL方便和直观,Github就采用了这种做法。

因为不同的版本,可以理解成同一种资源的不同表现形式,所以应该采用同一个URL。版本号可以在HTTP请求头信息的Accept字段中进行区分(参见Versioning REST Services):

Accept: vnd.example-com.foo+json; version=1.0

Accept: vnd.example-com.foo+json; version=1.1

Accept: vnd.example-com.foo+json; version=2.0


路径

路径又称为"终点"(endpoint),表示API的具体网址,每个网址代表一种资源(resource)



1. 资源作为网址,只能有名词,不能有动词,而且所用的名词往往与数据库的表名对应

举例来说,以下是不好的例子:

/getProducts
/listOrders
/retreiveClientByOrder?orderId=1

对于一个简洁结构,你应该始终用名词。 此外,利用的HTTP方法可以分离网址中的资源名称的操作。

GET /products :返回所有产品清单
POST /products :添加一个产品
GET /products/4 :获取产品 4
PATCH(或)PUT /products/4 :更新产品 4



2. API中的名词应该使用复数。无论子资源或者所有资源
举例来说,获取产品的API可以这样定义

获取单个产品:http://127.0.0.1:8080/AppName/rest/products/1
获取所有产品: http://127.0.0.1:8080/AppName/rest/products


HTTP动词

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

常用的HTTP动词有下面四个(括号里是对应的SQL命令)。

还有三个不常用的HTTP动词。

下面列出一些例子:

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应该提供参数,过滤返回结果。

下面是一些常见的参数。query_string 查询字符串,地址栏后面问号后面的数据,格式: name=xx&sss=xxx

?limit=10:指定返回记录的数量
?offset=10:指定返回记录的开始位置。
?page=2&per_page=100:指定第几页,以及每页的记录数。
?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
?animal_type_id=1:指定筛选条件

参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoos/ID/animals 与 GET /animals?zoo_id=ID 的含义是相同的。


状态码(Status Codes)

常见的状态码如下

完成的状态码看<a href='https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html'这里

标签:API,GET,规范,example,zoos,服务器,RESTful,ID
来源: https://www.cnblogs.com/zzliu/p/10854097.html