在我的公司,我们开始涉足 Web API 以访问和更新我们的数据;最初是为合作伙伴提供的,但将来可能会向公众提供。目前 API 的外观(例如 SOAP、REST、RPC)是完全开放的,我们还没有做出任何决定,所以我对人们认为好的 Web API 的两个示例以及您认为的原因很感兴趣那。
我感兴趣的是来自使用不同语言的人的意见(我们可能会向使用多种平台的人提供 API,特别是包括 .NET、Java、ActionScript 和 JavaScript)关于您认为好的 Web API例子,你有很好的经验。
我想介绍的几点:
你更喜欢 SOAP 类型的服务还是 REST/RPC 风格的服务?我怀疑有平台支持(例如.NET、Java)的人会更喜欢SOAP,而使用没有平台支持的语言的人会更喜欢其他人,但我想验证这个假设。
您是否关心 API 是否实际上是 RESTful 或是否是普通的旧 RPC 样式 HTTP GET/POST?如果是这样,你为什么在乎?一个 API 是否正确地描述自己(即如果它是 RPC 风格就不要声称是 RESTful)比它是否实际上是两者之一更重要?
我们需要验证谁在使用该服务。我一直在研究 Amazon S3 身份验证,它使用公共标识符和私有令牌,用于将请求的参数散列为验证令牌(这也类似于 flickr)。您以前是否使用过这种类型的身份验证,您是如何使用它的?是否有任何您发现有问题的哈希算法(即您的平台不支持)?您希望在 HTTP 标头中还是在 URI 中发送散列?
应该如何处理版本控制?拥有一个类型子目录是一个好主意,
/v1/
以便可以在旁边添加未来的版本,还是你会做一些不同的事情,比如在请求有效负载或查询中使用版本?您期望支持您构建的 API 版本多长时间(即,如果引入 v2,您对 v1 生命周期的期望是多少)。
此外,任何其他意见和要点都会很有用。
我故意对我们正在实现的 API 的实际类型保持模糊,因为我正在寻找关于人们认为好的 API 和实现机制的一般指导,所以这篇文章及其答案将对更多人有用在将来。
注意:我已经搜索并找不到关于此的通用问题 - 它们似乎都特定于某种类型的 API - 但如果它是重复的,请告诉我。另外,如果它应该是社区 wiki(我认为人们应该得到答案,所以我没有做到这一点),那么请告诉我,我会改变它。