web-dev-qa-db-ja.com

Web APIはどのように機能しますか?

Facebook、Twitterなど、サードパーティがデータにアクセスして操作するのに役立つ多くのWeb APIについて聞いたことがあります。 Web APIの仕組みを知りたいのですが。 Web APIの基本は何ですか?

自分のサイト用のAPIを作成して、他のユーザーがアクセスまたは更新できるようにしたい場合、何から始めればよいですか?

17
Harish Kurup

最も簡単な方法は、誰でも呼び出してURL、パラメータ、およびエフェクトに関する情報を公開できる一連のGET/POSTリクエストを作成することです。 読み取り専用タスクのGETリクエストおよびデータを変更するすべてのタスクのPOSTリクエストサーバー上。

必要に応じて認証システムを追加すると、単純なWeb APIを使用できます。

Web APIは単なる Interface 標準の HTTPリクエストメソッド を介してシステム(サイトなど)へのアクセスを許可します。データ自体は通常、いくつかの標準形式( [〜#〜] json [〜#〜] または [〜#〜] xml [〜#〜] などでラップされます)取り扱いを簡単にするため。


これが example 'TextWise'のWeb APIです

23
Dan McGrath

現在、会社の仮想化プラットフォーム用のAPIを開発しています。あなたはいくつかの異なる方法でそれらに取り組むことができますが、私のお気に入り(そして人々が理解できるものを動作させるための最速のルート)は単純なHTTP GETリクエストを使用してJSON応答を返すことです。

私のURLは次のようになります。

domain.com/method/call/subcall?key=key&data=something

次に、HTTP GET変数を分解し、呼び出し元が望んでいることを実行します。 Stack Exchange API開発にベータユーザーとしてサインアップした最大の理由の1つは、それが途方もない学習体験になることを知っていたということでした 確かにそうでした

通常、私は2つのJSONエンコードされた配列を返します。1つはresultで、基本的には呼び出しが成功したかどうかを示し、失敗した場合はエラーコード/エラー文字列を返します。もう1つは通常dataと呼ばれ、その内容はその特定の呼び出しのドキュメントに記載されています。さらに、GETベースのAPIは、テストとデバッグがはるかに簡単です。

SOAP/XMLRPCなど)には、他にも多くの形式が存在します。JSONを選択すると、驚くほど簡単で自由に選択できることがわかります。

たとえば、lotのフィールドを送信する必要があり、大量のGET変数を処理したくない場合は、これを行うことができます( PHPの例)

$to_send = base64_encode(json_encode($some_array));

それは反対側で簡単にデコードされ、何十もの変数を操作できますが、APIを介して2〜3のGET変数しか受け入れません。

メソッドと呼び出しを短く簡潔にして、各呼び出しが均一な「正常または失敗」の応答を返し、その後に要求されたデータが続くように設計します。

5
Tim Post

それは実際には非常に広範な質問です。最も基本的な意味では、client(Webブラウザのような)がWebサーバーに何らかのHTTPリクエストを送信すると、Web APIが機能します。サーバーはその要求を調べてユーザーが何を望んでいるかを把握し、クライアントが何を求めているかを調べるために(ページなどの)形式でデータを返します。これらは、Web APIに共通する唯一のものです。これはあなたの質問に実際には答えないことを私は理解していますが、質問が非常に広い理由を挙げたいと思います。

クライアントがリクエストをフォーマットしたり、サーバーがレスポンスをフォーマットしたりする方法にはさまざまな種類があるため、そのいずれかが意味を持つためには、クライアントとサーバーがいくつかの基本ルールに同意する必要があります。一般的に言って、今日では、この種のものに使用される2つの非常に一般的なスタイルがあります。

リモートプロシージャコール(RPC)

RPCスタイルのAPIでは、通常、API全体に対して1つのURLしかありません。あなたはあなたが何をしたいかについての情報を含んでいるある種のドキュメントをPOSTすることによってそれを呼びます、そしてサーバーはあなたが望むものを持っているドキュメントを返します。一般的な計算用語では、要求ドキュメントには通常、関数名といくつかの引数があります。

このスタイルのAPIの標準には、XML-RPCおよびSOAPが含まれます。これらの標準は、作成中の関数呼び出しを記述するために、またはAPI全体を記述するためにさえ使用できるフォーマットを作成しようとします。

REpresentational State Transfer(REST)

RESTスタイルのAPIでは、APIのURLはname spaceほど多くありません)。多くの異なるオブジェクトが存在するサーバーまたはサーバー内のフォルダーであり、この名前空間内のすべてのURLがAPIの一部になります。APIを使用することをサーバーに伝えるのではなく、URLはサーバーにAPIonを使用したい場合。次に、HTTPメソッド、および場合によってはリクエスト本文を使用して、実行したいことを説明しますtoそのオブジェクト:GET(すでにあるものを取得する)、POST(何か新しいものを作成する)、PUT(すでにあるものを置き換える) )、またはDELETE(すでに存在するものを削除します)使用できる他の動詞がいくつかありますが、これらは断然最も一般的です。

これまでのところ、RESTの標準形式については触れていません。理論的には、ほぼすべての形式を使用できます。 HTTPはすでに、何をしたいか、何をしたいかを言うことを提供しているので、リクエストボディのフォーマットはほぼ何でもかまいません:作成または置換したいオブジェクトの表現です。しかし実際には、REST作者は、とにかくフォーマットに同意する傾向があります。可能なすべてのフォーマットを理解するのが難しいためです。

2
The Spooniest