RESTful API を実装するには、次のような URL 構造を実装する必要があるというのは本当ですか?
http://example.com/post/
http://example.com/post/123
/123
編集、削除に使用される場所
質問をする別の方法は、次のとおりです。このように見える URL を RESTful と呼ぶことができますか?
http://example.com/script.php?method=get_title&blogid=123
RESTful API を実装するには、次のような URL 構造を実装する必要があるというのは本当ですか?
http://example.com/post/
http://example.com/post/123
/123
編集、削除に使用される場所
質問をする別の方法は、次のとおりです。このように見える URL を RESTful と呼ぶことができますか?
http://example.com/script.php?method=get_title&blogid=123
そのような URI 構造を設計する必要はありません。それもあるかもしれません/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 構造を定義することは理にかなっていますが、必須ではありません。
このようなURLがあれば
/all-posts/
/first-post
/some-stuff/second-post
/third-post
これに RESTful API を提供することもできます。アイデアは、GET
to/all-posts/
がすべての投稿オブジェクトの URL のリストを返し、クライアントがそれらの URL を使用してリソースとやり取りするというものです。基本的に、クライアントは URL を不透明なデータとして扱う必要があります。
クライアントに埋め込まれている URL が変更されない限り、クライアントを変更せずに構造を変更することもできます。
URL の例は、メソッドが含まれているため、RESTful API に属していない可能性がありますget_title
。REST では、URL はモノを表します。REST はさまざまな HTTP メソッドを使用するため、オブジェクトに対して何を行うか (変更する必要があるか、コンテンツを取得する必要があるかなど) は URL の一部ではありません。
REST の重要な側面は、URL がリソースであることです。うりのような
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を実際に使用する必要があります。
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 の概念は、REST が URL 駆動型であり、大きなデータ BLOB によって駆動されないという事実に実際に基づいています。REST では、メソッドを呼び出すために巨大な SOAP リクエストを渡す必要はありません。メソッドの呼び出し、オブジェクトの作成、やりたいことはすべて、単に URL と、使用した動詞とその URL によって呼び出されます。
これは役に立ちます。参照: RESTful サービスの URL
URL の構造は重要ではありません。重要なのは、各 URL が正確に 1 つのリソースを識別することです。各リソースはそれを指す複数の URL を持つことができますが、各 URL は 1 つのリソースのみを指す必要があります。