我应该如何构建一个好的(Web)API

时间:2008-08-29 00:56:34

标签: api-design

我将为网络应用构建一个API,我对人们可以建议的良好做法感兴趣。

我已经计划对其进行版本控制(版本1只能控制系统的某些方面,版本2可以控制更多,但这可能需要更改执行身份验证的方式,这与版本1不兼容) ,并且身份验证将与人们用于登录的标准用户名/密码不同(如果有人使用恶意工具,则无论api允许的话,都不会将其打开到完全模拟)。

有没有人有进一步的想法,或者您使用过特别好的API的网站示例?

5 个答案:

答案 0 :(得分:12)

阅读RESTful Web Services一本书,它可以让您对实践中如何使用REST有一个很好的概述,并且能够快速地加速以便立即开始,并且有信心。这比仅查看现有API更有用,因为它还讨论了设计选择和权衡。

答案 1 :(得分:8)

1)将版本号直接烘焙到URL中,而不是将其作为参数传递,因为这样可以完全自由地更改每个版本凹凸的API命名空间的组织。

2)保持您的URL重写规则(如果有的话)尽可能简单/精简(但不是更简单),同时使您的网址尽可能美丽(但不能更多)。

3)始终寻找可为每个响应找到的最佳HTTP状态代码(例如,不要忘记202和207)。

4)实施法西斯参数验证逻辑和信息性错误信息。

5)在适当的地方使用HTTP请求标头而不是参数(例如,允许客户端指定响应所需的数据格式,例如,接受)。

6)组织您的“名词”,使得不同客户受众使用的URL在您的URL树的“根”附近分开(这样,如果需要,可以更轻松地为不同的受众强制执行不同的身份验证机制,或者甚至将URL树的不同部分映射到不同的服务器。)

7)如果您在与API相同的域中提供常规网页并使用相同的身份验证凭据,则需要在API请求中使用X-Requested-With标头,以避免XSRF漏洞。

答案 2 :(得分:7)

我会看看经过验证的API:

  1. YouTube API
  2. Twitter API
  3. 关于这些API是否“好”有很多争论,但我认为它们的成功得到了证明,而且它们都很容易使用。

答案 3 :(得分:6)

使用REST

RESTful Web服务体系结构易于实现,并使用HTTP的优势和语义来实现它们的目的。它是面向资源的,就像网络本身一样。

Amazon Web Services,Google和其他许多人都提供REST API来与他们的产品进行互动。

答案 4 :(得分:3)

使用REST。

阅读API标准,或从其中一个受欢迎的标识中复制这些创意。

验证用户时要小心。

开始非常简单。

构建一个使用您的API的网站(即使它没用),以检查工作是否正常。也许你可以构建一个移动版本的网站或强迫你在很大程度上使用API​​的东西。