web-dev-qa-db-ja.com

REST API URLはこのようにする必要がありますか?

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
15
Gorge

そのような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な設計が自動的に行われます。

14
joschi

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の一部です。

7
Sven

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)から使用可能な形式を要求できます。

3
user1814491

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]
1
Abdul Khaliq

RESTの概念は、URL駆動であり、大きなデータブロブでは駆動されないという事実に基づいています。RESTでは、巨大なSOAPリクエストを渡して、 method-メソッドの呼び出し/オブジェクトの作成/実行したいことは、単にURLと、使用した動詞とそのURLによって呼び出されます。

URLの構造は重要ではありません。重要なのは、各URLが正確に1つのリソースを識別することです。各リソースは、それを指す複数のURLを持つことができますが、各URLは1つのリソースのみを指す必要があります。

0
rojoca