似乎今天网站有两类API。
允许网站功能扩展的API,如Facebook,Myspace等。这些API似乎非常多样化。
允许与Twitter,Flickr等现有网站功能进行交互的API。这些都声称基于REST,但实际上只是“基于HTTP的数据”。
如果您正在创建允许功能扩展和外部交互的网站,那么您将使用哪些现有API作为参考模型?
答案 0 :(得分:37)
我们自己正在这方面做一些研究。关于网站API参考的“黄金标准”,并没有那么多。
引用的最常见网站API是:
此处的另一个清单:
http://www.pingable.org/the-top-15-web-apis-for-your-site/
有人建议将这本书Restful Web Services作为一个很好的参考。
(请随时编辑以上列表以添加其他具有API的高端网站)
答案 1 :(得分:23)
How To Design A Good API and Why it Matters,Joshua Bloch的60分钟Google技术讲座,是相关的。
答案 2 :(得分:16)
与一些人一起工作后,我会直接了解它
实
的Myspace
Photobucket(免责声明:我写过photobucket api的服务器端)
微博
理想特征
所以说... Facebook和Twitter之间的东西。当然我偏爱我们在Photobucket上的一些东西,但我也很讨厌它。
答案 3 :(得分:11)
在我看来,API的文档与API的实际设计一样重要(或更重要)。
写得很好,简单的文档可以弥补任何设计缺陷。这是我在查看已发布的各种链接后所学到的。具体来说,Last.fm的文档看起来非常好:易于浏览和易于理解。
答案 4 :(得分:8)
Last.fm的api仍然是网上维护得最好的api之一。它也比大多数时间更长,因为它基本上就是这样。
答案 5 :(得分:8)
关于杰夫的大型API列表:我非常确定常见 不意味着“黄金标准”。
无需保留广泛API的手动列表。要获取列表,请查看http://www.programmableweb.com/apis/directory/1?sort=mashups。
由于我喜欢REST作为松散标准,我认为当有意义且直观时,API是“黄金”。
...对我来说都是最有意义的,并且经过深思熟虑(正如Brian已经指出的那样)。
在我目前的日常工作中,我也使用OpenSocial进行了大量工作,其中URI感觉非常自然,但也以自己的方式扩展了REST标准。
如果您喜欢严格且安全,请使用SOAP。
答案 6 :(得分:4)
我会查看OpenSocial,这是一个为社交网络sice创建API标准的运动。他们使用REST进行此操作并采用“以用户为中心”的方法。但这是一个非常有文档记录的方法,甚至可能有助于一个不完全基于社交的网站。如果您正在寻找一些内部代码实现,请查看Drupals钩子系统和Wordpress。
答案 7 :(得分:3)
我认为最好的方法是列出优秀网络API的特性,而不是引用示例。如果您喜欢Twitter / Facebook / etc API,那么您觉得这些API的哪些方面很有吸引力?
我会第一次刺伤:
请在评论中添加更多内容。
答案 8 :(得分:2)
我对其他人没有任何经验,但即使多年来一直在发展,Facebook API仍然很糟糕。它不会成为“黄金标准”。更确切地说,这是人们奋斗并咬紧牙关的事情,因为一旦他们最终做到了,它就会增加很多价值。
答案 9 :(得分:2)
一些非常好的API:
答案 10 :(得分:1)
这取决于您的目标受众群体。如果它是.net商店,那么肥皂可能是其他明智的关注REST,因为它有一个低得多的入门条。 从那里查看针对您想要的同一个人的网站API。这样你的api会觉得熟悉。
答案 11 :(得分:0)
Force(以前称为SalesForce)API:http://www.salesforce.com/us/developer/docs/api/index.htm
答案 12 :(得分:0)
AtomPub是黄金标准,因为它是由互联网上一些最聪明的人设计的。使用iit作为基础,你不能走得太远。这就是google和msft所做的。
答案 13 :(得分:0)
有一个类似的问题没有采取太多行动,但认为链接到它会很好。
What web APIs would you most want to replicate or are the most popular?
答案 14 :(得分:0)
如果我今天为现有网站设计了一个web api,假设该网站在正确使用HTTP方面设计得很好,我会使用现有的网站作为设计指南。
以Stack Overflow为例,它已经映射出整个URI空间。它具有在不同表示之间定义的完整互连集。 网站的用户已经熟悉网站结构,因此API结构已经很熟悉了。
需要更改的唯一部分是表示的内容,以消除所有不必要的标记。有必要添加一些额外的模板化链接,以允许目前只能通过javascript访问的搜索。例如,搜索用户不容易通过导航发现,因为目前链接是通过javascript构建的。
真正棘手的决定是使用什么媒体类型。您可以使用带有RDFa样式元数据标记的裸骨html,或者在Html5中使用新的Microdata格式。或者,您可以返回基于xml或Json的自定义媒体类型。类似于application / vnd.stackoverflow.question + xml等。自定义媒体类型使版本控制变得非常简单,但是对于不能直接访问StackOverflow的客户端来说,它更难以访问。自定义类型可以与Atom提要结合使用,Atom提要主要存在于StackOverflow中,
设计网络API与设计网站没什么区别,除了您提供的内容将由非网络浏览器的程序使用。
您不想做的是创建基于Http的数据访问层。这就像向世界展示你的内衣。现有网站针对所有常见使用场景进行了优化,许多api访问模式将类似,因此重用已创建的“视图”。可能有必要在这里和那里添加一些额外的链接,以使程序更快地获得他们想要的数据,但这些可以在需要时逐步添加。
编写良好的网站已经是非常有效的Web浏览器客户端API,因此没有必要回到绘图板来支持任何其他类型的客户端。 API结构不需要更改,只需更改内容。