【发布时间】:2011-01-21 05:21:15
【问题描述】:
我正处于为大型应用程序编写我的第一个成熟 API 的规划和早期编码阶段。这些年来我使用了多个 API,但这是我第一次被要求构建允许在这个级别进行编程交互的东西。
我进行了大量研究以寻找最佳实践等,并确定了我认为将提供相当灵活的响应通信系统的内容。
我的问题是:
这是您期望看到的 API 交互吗?
我错过了什么重要的事情吗?
API 说明:
我将使用 HTTP Type 1 协议进行通信,并使用唯一的 API 密钥进行身份验证。
我希望这是通过 SSL 连接通过 CURL 请求实现的。
成功 (200 OK) XML 响应示例(速率限制请求):
<?xml version="1.0" encoding="UTF-8"?>
<node>
<short_message>Request Complete</short_message>
<long_message>Rate Limit Status Response</long_message>
<response_data>
<rate_limit>40</rate_limit>
<rate_used>31</rate_used>
</response_data>
</node>
失败的 XML 响应示例(将在适当的 400/500 标头下发送);
<?xml version="1.0" encoding="UTF-8"?>
<node>
<error_code>1201</error_code>
<short_message>API Error</short_message>
<long_message>The requested API version (1.5) is invalid</long_message>
</node>
此外,我正在设置要在可搜索文档中使用的错误代码,以缓解其他开发人员的偏头痛。请求的通过/失败将通过适当的 HTTP 代码给出——成功(200)、错误请求(400)、未找到方法(404)、身份验证失败(403)等......
我还使用基于版本的端点,因此任何代码更改都不需要外部代码更改。
最终,开发人员将能够请求 XML、JSON 或 PHP 序列化数组中的所有响应。
我的代码内部非常简单。所有数据都通过 POST(可能使用 CURL 或其他替代方法)传递,包括唯一的 API 密钥。该 API 密钥与系统中的用户相关联,然后允许内部方法执行为该特定用户启用的有限功能集。
我遵循 API 的“黄金法则”——“始终添加,永不删除”。
那么.. 我还应该考虑什么以及我错过了什么?
【问题讨论】: