現在、既存の Web サイト用に Web API を設計している場合、Web サイトが HTTP の適切な使用に関して適切に設計されていると仮定すると、既存の Web サイトを設計ガイドラインとして使用します。
スタック オーバーフローを例にとると、URI 空間全体が既にマップされています。これには、異なる表現間で定義された相互接続の完全なセットがあります。サイトのユーザーは既にサイトの構造に精通しているため、API の構造にも既に精通しているはずです。
変更する必要がある唯一の部分は、不要なマークアップをすべて削除するために、表現の内容です。現在 JavaScript 経由でしかアクセスできない検索を可能にするために、テンプレート化されたリンクをいくつか追加する必要があります。たとえば、ユーザーの検索は、現在のところ JavaScript を介してリンクが構築されているため、ナビゲートによって簡単に発見することはできません。
本当にトリッキーな決定は、使用する media-typeです。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 構造を変更する必要はなく、提供されるコンテンツだけを変更する必要があります。