设计实用RESTful API的最佳实践

[设计实用RESTful API的最佳实践] 您的数据模型已开始稳定,您可以为您的网络应用创建公共API。您意识到,一旦API发布并且希望尽可能正确地获得API,很难对其进行重大更改。现在,互联网上对API设计的看法并不缺乏。但是,由于没有一个广泛采用的标准适用于所有情况,因此您有许多选择:您应该接受哪些格式? 你应该如何认证? 你的API应该被版本化吗? 在为 Enchant ( Zendesk Alternative ) 设计API时 ,我试图为这些问题提出实用的答案。我的目标是为Enchant设计的API 是易于使用,易于采用,并具有足够的灵活性,以内部测试 为我们自己的用户界面。 目录 API是开发人员的用户界面 - 所以要付出一些努力让它变得愉快 使用RESTful URL和操作 在任何地方使用SSL,没有例外 API只有它的文档一样好 - 所以有很好的文档 版本通过URL,而不是通过标题 使用查询参数进行高级筛选,排序和搜索 提供一种方法来限制从API返回的字段 从POST,PATCH和PUT请求中返回一些有用的东西 HATEOAS还不实用 尽可能使用JSON,只有在必要时才使用XML 你应该使用带有JSON的camelCase,但是snake_case更容易阅读20% 默认打印漂亮并确保支持gzip 默认情况下不要使用响应封装 考虑将JSON用于POST,PUT和PATCH请求主体 使用链接标头进行分页 提供自动加载相关资源表示的方法 提供一种覆盖HTTP方法的方法 为速率限制提供有用的响应标头 使用基于令牌的身份验证,通过需要委派的OAuth2进行传输 包括便于缓存的响应标头 定义消耗品错误有效负载 有效使用HTTP状态代码 API的关键要求 网上发现的许多API设计观点都是围绕模糊标准的主观解释而不是在现实世界中有意义的学术讨论。我在这篇文章中的目标是描述为当今的Web应用程序设计的实用API的最佳实践。如果感觉不对,我不会尝试满足标准。为了帮助指导决策制定过程,我已经写下了API必须要求的一些要求: 它应该使用有意义的 Web标准 它应该对开发人员友好,并可通过浏览器地址栏进行探索 它应该简单,直观和一致,以使采用不仅容易而且令人愉快 它应该提供足够的灵活性来为大多数 enchant UI 提供动力 它应该是有效的,同时保持与其他要求的平衡 API是开发人员的UI - 就像任何UI一样,确保仔细考虑用户体验非常重要! 使用RESTful URL和操作 如果有一件事被广泛采用,那就是RESTful原则。这些是 Roy Fielding 在他关于基于网络的软件架构的论文的第5章中首次介绍的。 REST 的关键原则涉及将API分离为逻辑资源。使用HTTP请求操纵这些资源,其中方法(GET,POST,PUT,PATCH,DELETE)具有特定含义。 [Read More]