検索を試みましたが、RESTfulインターフェイス経由でデータにアクセスする方法を理解できません。私は、誰かがそのAPIを使っていくつかの仮想Webサービスからいくつかのデータにアクセスすることを示すサンプルコードを探しています。シンプルな「ハウツーワークス」の説明も役に立ちます。PHPからRESTful APIをどのように使用しますか?
答えて
ホットトピックの種類。
RESTは、HTTPリクエストメソッドを使用してオブジェクトのアプリケーション(RESTサーバー)アクションを判断するという原則に従って動作します。よく使われる4つのHTTPメソッドは、GET、POST、PUT、DELETEです。
たとえば、問題のオブジェクトはユーザーデータです。 RESTのurl /オブジェクトは次のようになりますhttp://mydomain.com/services/user
既存のユーザーに関する情報を取得したい場合はGET http://mydomain.com/services/user/someuserid
となります。
ユーザーを作成する場合は、POST http://mydomain.com/services/user
を使用し、リクエスト本文にはユーザーの情報が含まれます。
ユーザーの情報を変更する場合は、PUT http://mydomain.com/services/user/someuserid
を使用します。再度、リクエスト本文にはユーザーの新しい情報が含まれます。
我々はユーザーを削除したい場合は、要約するとDELETE http://mydomain.com/services/user/someuserid
を使用することになり、4つの異なるHTTPメソッドは、一般的に、これらの意味を持っていますが、それがどのようにRESTfulなに応じて、サーバーへのサーバーと異なることができます。
- GET ==
- 、取得フェッチ、検索、およびその他の同義語POST ==作成、
- PUT ==変更を追加し、DELETE
- を変更する==削除、
-1:Justin、彼はRESTfulなAPIをどのように使用するかについての助けが必要でした。 –
まず、あなたの言語を見てください。私はあなたのコメントにフラグを立てました。第2に、投稿は「役に立つ」かもしれませんが、質問は「RESTfulなAPIを使う方法」に関するもので、答えは「RESTfulなAPIは何ですか?」ということです。これは有用な答えであることは明らかです別の質問に。 –
-1これは明らかにRPCです。カップリングが進行しています。これについてはRESTはありません。 – aehlke
http://oreilly.com/catalog/9780596529260/
第2章と11削除 - ウェブサイトでのサンプルコードを。
-1:リンクを投稿するだけではありません。 –
+1:あなたが正しい方向にあなたを導くならば、リンクを投稿することは良いです。私は単純なリンクで解決された多くの答えを得ました。 – Jason
http://meta.stackexchange.com/questions/7515/why-is-linking-bad/7519#7519とそのトピックに関する他の多くのメタ・ディスカッションを参照してください。 –
SOAPベースのサービスと "サービス参照の追加"または "Web参照の追加"のような経験をお探しなら、それを見つけることはできません。 RESTベースのサービスは軽量であるため、ツールは不要です。
サービスからPOSTまたはGETにはWebRequest
クラスを使用するだけです。 XMLを作成して、LINQ to XMLまたはXML Serializationなどを使用して送信します。応答が返ってくると、ほかのXMLと同様に解析されます。
例として、「A REST Client Library for .NET, Part 1」(申し訳ありませんが、パート2はありません)を参照してください。
あなたのウェブサイトへのあなた自身の答えを促進してリンクする人を投票しても、あなたがどれほど正しいかにかかわらず、あなたの原因には役立ちません。 – Jason
私がそれらを票決した理由についてあなたが正しければ、私は自分自身について悪い気分になるでしょう。しかし、RESTfulなAPIをどのように使用するのかについては言及していないので、私はそれらを棄権したので、私はそれほど気分は悪くありません。私はまた、RESTfulなAPIを使用している他の例のURLを手軽に持っているわけではないので、パート2がないという恥ずかしい事実にもかかわらず、私は「パート1」へのURLを壊して使用しました。いいえ、私は今、大丈夫だと感じています... –
あなたは、クライアントがドキュメントの解析方法を選択するためのレスポンスのコンテンツタイプに依存しているという部分を見逃しています。 – aehlke
Sun Cloud APIをご覧ください。それはAFAIKであり、その設計とドキュメントにhypermedia as the engine of application state(HATEOAS)制約を取り入れた最初のAPIです。このわずかな制約は、RESTの中心的なアイデアの1つと判明し、ここ数年で一貫して無視されてきました。
Sun Cloudのマニュアルには、サンプルリクエスト、応答、およびハイパーテキスト駆動型のメディアタイプの例があります。
-1:Sun APIは、REST APIを_use_する方法に関する質問に答えていますか? –
+1このリンクには、REST APIの使用方法に関する例があるためです。 – Jason
私はそのリンクをチェックしました。 API仕様全体へのリンクです。リンクが_usage_に行った場合、私は投票しませんでした。このリンクは、辞書へのリンクが「ドキュメントは何ですか?」という質問に同じように答えます。 RichがそのAPIの一部の使用法へのリンクを追加する場合、私はdownvoteを削除します。 –
これは私が似たような質問に答えたばかりの疑似コードです。
任意のHTTPベースのRESTfulクライアントの問い合わせの一般的な流れはこのような何かを行く必要があります。
- が APIのルートURLにHTTP GETを行います。
- http ヘッダー "Content-Type"で指定された メディアタイプに基づいて応答を解析します。
- 回答に質問に回答 が含まれていますか?
- はいの場合は、情報 を抽出し、必要な操作を行います。
- いいえの場合、応答 には という別のリソースへのリンクが含まれていますが、これは私の 質問に対する回答があります。
- はいの場合は、 タイプ定義の指示に基づいて、そのリンクを にHTTP GETまたはPOSTします。 手順3に進みます。
- いいえ、見つからない場合は、 のユーザーに答えを見つけることができません。
ダレル、それは、特に答えを得ることが重要な場合は、事を行うためにかなり非決定論的な方法のように思えます。 「メディアタイプはどこに文書化されていますか」、「明確に文書化されていますか?」、「リソースが私の質問に答えているかどうかを知るにはどうすればよいか」などの質問が出されます。ユーザーに「いいえ」と伝えるのは1つのことかもしれませんが、手順7に達したために一部のビジネス操作が失敗しなければならない場合はもう1つ、理由を説明する必要があります。 –
クライアントコードがメディアタイプを理解することは不可欠です。なぜメディアタイプが「どこで」記録されているのか気になるのですか? メディアタイプがあいまいであるかどうかに関わらず、クライアントはメディアタイプの処理コードに基づいて正確に応答しますが、「RESTful APIの使い方」とは関係ありません。 クライアントがメディアタイプを理解していて、それが何を探しているのかを知っている場合、メディアタイプに情報が含まれているかどうかを知る必要があります。ビジネスオペレーションが存在しないリソースを要求すると、システムはそのシナリオに対処できると期待します。 –
Darrell、私が考えているシナリオは、解決するビジネス上の問題があり、それを解決するための特定のRESTful APIを使用するように指示されています。私はメディアタイプがどのように文書化されているのだろうと思っているので、いつサービスが返すメディアタイプを理解したのか分かります。 –
もう少し見た後、私は必要な情報を私に与えたものを見つけました。 http://developer.yahoo.com/php/howto-reqRestPhp.html
本当に検索しますか? RESTはかなりよく文書化されています。 – Jason
@ Jason反対に、ネットはRESTの不正確で誤解を招くようなドキュメントで浸水しています。正確な情報源を見つけるのが難しい。 – aehlke