RESTful APIを実装するには、次のようなURL構造を実装する必要があるのは本当ですか
http://example.com/post/
http://example.com/post/123
どこ /123
は編集、削除に使用されます
質問するもう1つの方法は、次のようになります。このようなURLをRESTfulと呼ぶことができますか?
http://example.com/script.php?method=get_title&blogid=123
そのようなURI構造を設計するためにhaveを行う必要はありません。 /some_obscure_string/base64_encoded_title/unique_id
。他のいくつかの要因に応じて、これはRESTfulになることもあります。
しかし、RESTful WebアプリケーションでURIを設計する方法にはいくつかのベストプラクティスがあり、それらの1つはできるだけシンプルで人間が読めるようにすることです。
あなたの例http://example.com/script.php?method=get_title&blogid=123
もRESTfulですが、クエリパラメータは、ある種のRPCまたはRMI-over-HTTPが代わりに使用されることを示しています。
まとめると、URIの設計はあまり考慮しないでください。これにより、アプリケーションの適切で適切なRESTfulな設計が自動的に行われます。
RESTの背後にある考え方は、すべてのリソースに独自のURLがあり、異なるHTTPメソッドを使用してそれらのリソースと対話するということです。異なるリソース間の階層がURLに反映されますが、必須ではありません。
このようなURLがある場合
/all-posts/
/first-post
/some-stuff/second-post
/third-post
それでもRESTful APIを提供できます。アイデアは、GET
から/all-posts/
がすべての投稿オブジェクトのURLのリストを返し、クライアントがそれらのURLを使用してリソースと対話するというものです。基本的に、URLはクライアントによって不透明なデータとして扱われるべきです。
クライアントに埋め込まれているURLが変更されない限り、クライアントを変更せずに構造を変更することもできます。
サンプルURLにはメソッドget_title
が含まれているため、おそらくRESTful APIに属していません。 REST URLはthingを表します。Thingで実行すること(変更する必要がある場合、コンテンツを取得する場合)など)は、 RESTは、さまざまなHTTPメソッドを使用するため、URLの一部です。
RESTの重要な側面は、URLがリソースであることです。URIのような
http://example.com/script.php?etc-etc-etc
uRIのリソース部分にリソース識別子を入れません。 RESTful APIがgetパラメーターを使用してはならないということではありません。実際、それで十分です。
http://example.com/posts?sort=date_asc&offset=20&limit=10
最も古い投稿の3番目のページのURIを取得する優れた方法かもしれません。ただし、この方法でgetパラメータを使用するのは、メソッドもGET
であるリクエストでのみ使用する必要があります。 PUT
、特にPOST
メソッドは、パス部分のみが影響を受けるリソースで単純なURIを実際に使用する必要があります。
RESTful URIの設計はすべてリソースアクセスに関するものであり、RESTfulな方法で構造化する必要があるため、クエリ文字列は必要ありません。
例えばGETの
著者/
著者/ 1
著者/ 1 /本
著者/ 1 /本/ 10
著者/ 1 /本/ 10 /要約
等.
最近では何でもすべてがRESTfullと呼ばれています。発明者のロイフィールディング博士によるいくつかの応答を見るだけで、いくつかのアイデアが得られます。これについて少し読んでおく価値があります。
PSはURIに投稿、取得などする必要はありません。現在、HTTPプロトコルは主にREST APIの消費に使用されており、動詞を呼び出しの一部として渡すことができます。また、概念もあります。コンテンツネゴシエーションの場合、REST API(json、xml atc)から使用可能な形式を要求できます。
URLの例:
GET http://del.icio.us/api/
GET http://del.icio.us/api/peej/tags/
GET http://del.icio.us/api/peej/tags/test
DELETE http://del.icio.us/api/peej/bookmarks/[hash]
RESTの概念は、URL駆動であり、大きなデータブロブでは駆動されないという事実に基づいています。RESTでは、巨大なSOAPリクエストを渡して、 method-メソッドの呼び出し/オブジェクトの作成/実行したいことは、単にURLと、使用した動詞とそのURLによって呼び出されます。
URLの構造は重要ではありません。重要なのは、各URLが正確に1つのリソースを識別することです。各リソースは、それを指す複数のURLを持つことができますが、各URLは1つのリソースのみを指す必要があります。