• 18834196600
RESTful API设计龙采科技技巧经验总结
作者:龙采科技 / 2016-08-14 11:55 / 浏览次数:

跨域资源共享(CORS)

需要重点关注的是,如果你打算在上托管你的前端站点,而将API放在另外一个不同的子域上,例如api.myservice.com,那么你需要在后端实现CORS,这样才能使得AJAX调用不会抛出这样的错误。

使用复数形式

当你从/posts请求多个帖子的时候,这样的URL看起来更明了:

更多有关混合类型的信息,请看下文:“使用根级别的‘me’端点(URL)”。

避免查询字符串

查询字符串的作用是对关系数据库返回的记录集做进一步地过滤。

更多信息请看下文:“避免对嵌套路由的操作”。

使用HTTP方法

我们可使用下面这些HTTP方法:

GET 用于获取数据。

POST 用于添加数据。

PUT 用于更新数据(整个对象)。

PATCH 用于更新数据(附带对象的部分信息)。

DELETE 用于删除数据。

GET 用于获取数据。

POST 用于添加数据。

PUT 用于更新数据(整个对象)。

PATCH 用于更新数据(附带对象的部分信息)。

DELETE 用于删除数据。

补充一点,对于修改对象的部分内容的请求来说,我认为PATCH是减少请求包大小的一个好的方法,并且它也能很好的跟自动提交/自动保存字段配合起来用。

一个很好的例子是Tumblr的“仪表盘设置”屏幕,其中,“服务的用户体验”的一些非关键性选项可以单独地编辑和保存,而不需要点最下面的提交按钮。

对于POST,PUT或PATCH的成功响应消息,应该返回更新后的对象,而不是只返回一个null。

有关响应的其他内容,请阅读下文:“JSON格式的响应和请求”。

使用封包

“我不喜欢数据封包。它只是引入了另一个键来浏览数据树。元信息应该包含在包头中。”

“我不喜欢数据封包。它只是引入了另一个键来浏览数据树。元信息应该包含在包头中。”

最初,我坚持认为封包数据是不必要的,HTTP协议已经提供了足够的“封包”来传递响应消息。

然而,根据Reddit上的回复所述,如果不封包为JSON数组,则可能会出现各种漏洞和潜在的黑客攻击。

现在建议使用封包,你应该把数据封包后再应答!

同样要重点关注的是,不像其他语言那样,Java之类的语言将会将空对象认为是true! 因此,在下面这种情况下,不要返回空的对象来作为响应的一部分:

JSON格式的响应和请求

所有东西都应该被序列化成JSON。如果你期待从服务器上获取JSON格式的数据,那么请客气一点,请发送JSON格式的内容给服务器。请两边保持一致!

某些情况下,如果动作执行成功(例如DELETE),那我并没有什么需要返回的。但是,在某些语言(如Python)中返回一个空对象可能被认为是false,并且在开发人员调试程序的时候,这种情况并不容易发现。因此,我喜欢返回“OK”,尽管这是一个字符串,但是在返回的时候会被包装成一个简单的响应对象。

使用HTTP状态码和错误响应

因为我们使用了HTTP方法,所以我们应当使用HTTP状态码。

我喜欢使用这些状态码:

对于数据错误

400:请求信息不完整或无法解析。

422:请求信息完整,但无效。

404:资源不存在。

409:资源冲突。

400:请求信息不完整或无法解析。

422:请求信息完整,但无效。

404:资源不存在。

409:资源冲突。

对于鉴权错误

401:访问令牌没有提供,或者无效。

403:访问令牌有效,但没有权限。

401:访问令牌没有提供,或者无效。

403:访问令牌有效,但没有权限。

对于标准状态

200: 所有的都正确。

500: 服务器内部抛出错误。

200: 所有的都正确。

500: 服务器内部抛出错误。

【龙采业务】网站建设、网站设计、服务器空间租售、网站维护、网站托管、网站优化、百度推广、自媒体营销、微信公众号
如有意向---联系我们
热门栏目
热门资讯
热门标签

网站建设 网站托管 成功案例 新闻动态 关于我们 联系我们 服务器空间 加盟合作 网站优化

备案号:晋ICP备19000634号 

公司地址:山西省太原市南中环街清控创新基地 咨询QQ:1715793209 手机:18834196600 电话:0351-2371270