RESTful API 设计最佳实践(7)

本文探讨RESTful API设计中如何返回新建资源的URL,XML、JSON与EDN格式的选择,分页策略,API调用频率限制,以及错误处理的最佳实践。强调了HTTP状态码和消息头的重要性,同时提出在返回资源时应提供清晰的超链接以支持超媒体驱动。
摘要由CSDN通过智能技术生成

RESTful API 设计最佳实践(7)

本篇博客将侧重介绍在RESTful API设计中,消息头HEADER和消息体body相关的东西。URL只是RESTful API设计的主要一部分,要实现REST的统一接口,HTTP协议中的其他部分也不可或缺。关于统一接口,可查看我之前的博客。

一、返回新建资源的URL

使用POST新建的资源时,如果创建成功,则返回201状态码,,应该在返回的消息头HEADER的 location 字段中,加上指向新建资源的URL,这是HTTP规范只一(参见rfc2616)。根据实际需要,可以在body中带上一些必要的信息。

也就是说,在RESTful API中,很多情况下,跟状态码+一些标准的header字段信息,就能够很快获知请求处理结果,而不一定非要从body中费力解析出来。但是往往我们会忽略掉这一点,而将所有处理结果信息全部塞到body中,如:

:body {:result :success :id "新资源ID"}

这种方式其实还是RPC设计思维,并且单纯返回一个新资源的ID号也是不正确的(但估计绝大多数人的实现习惯中,都是这样做的)。因为在REST中,资源是用URL定义的,一个资源ID并不能标识资源在服务其中所处的位置。客户端通过post请求新建资源时,它并不知道服务器具体把它新建到哪里了,所以服务器应当返回一个具体的URL给客户端。

二、XML vs JSON vs EDN

1. 格式的对比和选择

下图为谷歌探索中查到的XMLAPI 、JSON API以及EDN使用量的数据(搜索不到EDN数据,因此用clojure代替——用clojure开发的,大多都用edn格式吧,不是很精确)
xml vs json vs edn
XML API使用量越来越小,JSON API程上升趋势,clojure的使用量也在增加。如果你的服务没有被XML捆绑,那么可以完全放弃提供XML API了。如果你是clojure和clojurescript的使

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值