- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RESTful API 设计最佳实践
数据模型已经稳定,接下来你可能需要为web (网站)应用创建一个公开的API (应用程序编程接口)。需要认识到这样一个问题:一旦API
发布后,就很难对它做很大的改动并且保持像先前一样的正确性。现在,网络上有很多关于API设计的思路。但是在全部案例中没有一种被广
泛采纳的标准,有很多的选择:你接受什么样的格式?如何认证?API应该被版本化吗?
在为SupportFu (一个轻量级的Zendesk替换实现)设计API时,对于这些问题我尽量得出一些务实的答案。我的目标是设计这样一个API,
它容易使用和采纳,足够灵活去为我们用户接口去埋单。
API的关键要求
许多网上能找到的API设计观点都是些学术讨论,这些讨论是关于模糊标准的主观解释,而不是关于在现实世界中具有意义的事。本文中我的
目标是,描述一下为当今的web应用而设计的实用的API的最佳实践。如果感觉不对,我不会去尝试满足某个标准。为了帮助进行决策,我已
经写下了API必须力争满足的一些要求:
它应当在需要的地方使用 web 标准
它应当对开发者友好并且便于在浏览器地址栏中浏览和探索
它应当是简单、直观和一致的,使它用起来方便和舒适
它应当提供足够的灵活性来增强大多数的 SupportFu 用户界面
它应当是高效的,同时要维持和其他需求之间的平衡
一个 API 是一个开发者的 UI 就像其他任何 UI 一样, 确保用户体验被认真的考虑过是很重要的!
使用 RESTful URLs and actions
如果有一样东西获得广泛认可的话,那就是 RESTful 原则。Roy Felding 在他论文 network based software architectures 的 第五
章 中首次介绍了这些原则。
这些REST的关键原则与将你的 API 分割成逻辑资源紧密相关。使用HTTP请求控制这些资源,其中,这些方法 (GET, POST, PUT,
PATCH, DELETE)具有特殊含义。
可是我该整出什么样的资源呢?好吧,它们应该是有意义于 API 使用者的名词 (不是动词)。虽然内部Model可以简单地映射到资源上,但
那不一定是个一对一的映射。这里的关键是不要泄漏与API不相关的实现细节。一些相关的名词可以是 票,用户和小组。
一旦定义好了资源, 需要确定什么样的 actions 应用它们,这些 actions 怎么映射到你的 API 上。RESTful 原则提供了 HTTP methods 映射作为策略来处理 CRUD
actions,如下:
GET /tickets 获取 tickets 列表
GET /tickets/12 获取一个单独的 ticket
POST /tickets 创建一个新的 ticket
PUT /tickets/12 更新 ticket #12
PATCH /tickets/12 部分更新 ticket #12
DELETE /tickets/12 删除 ticket #12
REST 非常棒的是,利用现有的 HTTP 方法在单个的 /tickets 接入点上实现了显著的功能。没有什么方法命名约定需要去遵循,URL 结构
是整洁干净的。 REST 太棒了!
接入点的名称应该选择单数还是复数呢?keepitsimple原则可以在此应用。虽然你内在的语法知识会告诉你用复数形式描述单一资源实例
是错误的,但实用主义的答案是保持URL格式一致并且始终使用复数形式。不用处理各种奇形怪状的复数形式 (比如person/people,
goose/geese)可以让API消费者的生活更加美好,也让API提供者更容易实现API (因为大多数现代框架天然地将/tickets和/tickets/12放
在同一个控制器下处理)。
但是你该如何处理 (资源的)关系呢?如果关系依托于另外一个资源,Restful原则提供了很好的指导原则。让我们来看一个例
子。SupportFu的一个ticket包含许多消息 (message)。这些消息逻辑上与/tickets接入点的映射关系如下:
GET /tickets/12/messages 获取ticket #12下的消息列表
GET /tickets/12/messages/5 获取ticket #12下的编号为5的消息
POST /ticke
您可能关注的文档
最近下载
- 国资监管数智化洞察与实践白皮书.pdf VIP
- 人教版新教材高中化学必修第二册第7章有机化合物第1节认识有机化合物 教学课件.pptx VIP
- 工程造价审计投标审计服务财务决算审计服务方案.docx VIP
- (高清版)G-B∕T 18921-2019 城市污水再生利用 景观环境用水水质.pdf VIP
- 建设单位安全管理体系.docx VIP
- day2-专场_3老师粉末涂料pci final.pdf VIP
- 强我国防勿忘国耻课件.pptx VIP
- 建设工程造价咨询规范.pdf VIP
- 应征入伍服兵役高等学校学生国家教育资助申请表1(样表).docx
- day1-水性专场_4欧宝迪先生alberdingk wb resin innovation and application industry coatings.pdf VIP
文档评论(0)