今日のWebサイトには2つのカテゴリのAPIがあるようです。
FacebookやMyspaceなどのようにサイトの機能を拡張できるようにするAPI。これらのAPIは非常に多様であるように思われます。
Twitter、Flickrなどの既存のサイト機能との相互作用を可能にするAPI。これらはすべてRESTベースであると主張していますが、実際には単に「dataoverHTTP」です。
機能拡張と外部インタラクションの両方を許可するWebサイトを作成する場合、参照モデルとしてどの既存のAPIを使用しますか?
私たちはこの分野で自分たちでいくつかの研究を行っています。 WebサイトAPIリファレンスの「ゴールドスタンダード」に関してはそれほど多くはありません。
参照される最も一般的なWebサイトAPIは次のとおりです。
ここに別のリスト:
http://www.pingable.org/the-top-15-web-apis-for-your-site/
誰かがこの本を推薦しました Restful Web Services これに関する良い参考資料として。
(上記のリストを自由に編集して、APIを備えた他の有名なWebサイトを追加してください)
優れたAPIを設計する方法とその重要性 、 Joshua Bloch による60分間のGoogle技術トークが関連しています。
いくつかの作業を終えたので、すぐに説明します
フェイスブック
私のスペース
Photobucket(免責事項:Photobucket APIのサーバー側を作成しました)
ツイッター
理想的な特性
そうは言っても... FacebookとTwitterの間の何か。もちろん、私はPhotobucketにあるもののいくつかに部分的ですが、それのいくつかも嫌いです。
APIのドキュメントは、APIの実際の設計と同じくらい(またはそれ以上)重要であるように思われます。
よく書かれた簡単なドキュメントは、設計上の欠陥を補います。すでに投稿されているさまざまなリンクを見て、それが私が学んだことです。具体的には、Last.fmのドキュメントは非常に優れているようです。ナビゲートしやすく、理解しやすいです。
ジェフの大きなAPIのリストについて: common はnotはを意味しないと確信しています]「ゴールドスタンダード」。
広く普及しているAPIの手動リストを保持する必要はありません。リストを取得するには、チェックアウトしてください http://www.programmableweb.com/apis/directory/1?sort=mashups 。
私はRESTが緩い標準として好きなので、APIが意味があるであり、直感的。
…すべてが私にとって最も理にかなっており、よく考えられています(ブライアンがすでに指摘したように)。
私の現在の日常業務では、URIが非常に自然に感じられるだけでなく、REST標準を独自の方法で拡張するOpenSocialでも多くの作業を行っています。
厳密で安全な場合は、SOAPを使用してください。
Last.fmのAPIは、引き続きネット上で最もよく維持されているAPIの1つです。それは基本的にそれと同じように始まったので、それはまたほとんどより長くありました。
ソーシャルネットワークサイスのAPI標準を作成する運動であるOpenSocialをチェックします。彼らはこれにRESTを使用し、「ユーザー」中心のアプローチを採用しています。しかし、これは非常によく文書化されたアプローチであり、完全にソーシャルベースではないサイトでも役立つ可能性があります。一部の内部コード実装は、DrupalsフックシステムとWordpressを調べます。
答える最良の方法は、例を引用するのではなく、優れたWeb APIの特性をリストすることだと思います。 Twitter/Facebook/etc APIが好きなら、これらのAPIのどの側面が魅力的だと思いますか?
私は最初の刺し傷を取ります:
コメントにさらに追加してください。
特に優れているいくつかのAPI:
私は他の人との経験はありませんが、それが何年にもわたって進化してきたとしても、FacebookAPIはまだひどいです。それは「ゴールドスタンダード」に近いところはありません。むしろ、それは人々が苦労して歯を食いしばる何かです。なぜなら、彼らが最終的にそれを正しく理解すると、それは多くの価値を追加することができるからです。
それはあなたのターゲットオーディエンスが何であるかに依存します。 .netショップの場合、石鹸はおそらく大丈夫です。それ以外の場合は、エントリのバーがはるかに低いため、REST)に焦点を当てます。 。このようにして、APIはなじみのあるものになります。
Force(以前はSalesForceとして知られていました)API: http://www.salesforce.com/us/developer/docs/api/index.htm
これと同様の質問があり、あまり行動を起こさなかったが、それにリンクするのが良いと思った。
AtomPubは、インターネット上で最も優秀な人々によって設計されたため、ゴールドスタンダードです。 iitをベースとして使用すると、間違いを犯すことはできません。それはグーグルとmsftがすることです。
今日、既存のWebサイト用にWeb APIを設計している場合、そのWebサイトがHTTPの適切な使用法に関して適切に設計されていると仮定すると、既存のWebサイトを設計ガイドラインとして使用します。
例としてStackOverflowを取り上げます。これには、RIスペース全体がすでにマップされていますがあります。異なる表現間で定義された相互接続の完全なセットがあります。 サイトのユーザーはすでにサイト構造に精通していますしたがって、API構造はすでに精通しているでしょう。
変更する必要があるのは表現の内容だけです、不要なマークアップをすべて削除します。現在javascript経由でのみアクセス可能な検索を可能にするために、いくつかのテンプレートリンクを追加する必要があります。たとえば、現在リンクはjavascriptを介して構築されているため、ユーザーの検索はナビゲートでは簡単に見つけることができません。
本当にトリッキーな決定はどのメディアタイプを使用するかです。 RDFaスタイルのメタデータマークアップでベアボーンhtmlを使用するか、ワイルドになってHtml5の新しいMicrodata形式を使用することができます。または、xmlまたはJsonに基づいてカスタムメディアタイプを返すこともできます。 application/vnd.stackoverflow.question + xmlなどのようなもの。カスタムメディアタイプを使用すると、バージョン管理が非常に簡単になりますが、StackOverflowに直接アクセスするように設計されていないクライアントはアクセスしにくくなります。カスタムタイプは、ほとんどがStackOverflowにすでに存在するAtomフィードと組み合わせて使用できます。
Web APIの設計は、実際にはWebサイトの設計と同じです、Webブラウザーではないプログラムによって消費されるコンテンツを配信しているという事実を除いて。
やりたくないのは、Httpベースのデータアクセス層を作成することです。それはあなたの下着を世界に見せているようなものです。既存のWebサイトは、すべての一般的な使用シナリオに合わせて最適化されており、APIアクセスパターンの多くは類似しているため、すでに作成されている「ビュー」を再利用します。プログラムが必要なデータを取得するのを少し速くするために、あちこちにいくつかの追加リンクを追加する必要があるかもしれませんが、必要に応じてそれらを段階的に追加することができます。
よく書かれたWebサイトはすでにWebブラウザクライアントにとって非常に効果的なAPIであり、他のタイプのクライアントをサポートするために設計図に戻る必要はありません。 API構造を変更する必要はなく、配信されたコンテンツのみを変更する必要があります。