5

ほとんどのRESTチュートリアルは、リソースを次のように配置しました。

GET  /car/      -> list of cars
GET  /car/<id>/ -> info about specific car
POST /car/      -> create a new car

ただし、ブラウザで使用するWebアプリケーションを構築する場合、めったに説明されないリンクが欠落しているため、/ car /にPOSTする前に、新しいリソース(車)を作成するためのフォームを取得する必要があります。このフォームのURLはどうあるべきですか?

私は通常使用しました:

 GET  /car/new/ -> form for creating a new car
 POST /car/new/ -> redirect to /car/<id>/ if item is created else show form with invalid fields highlighted

しかし、 http://www.slideshare.net/Wombert/phpjp-urls-restによると、これは適切なRESTURLではありません。「new」はリソースではなく動詞として実際に使用されているため、RESTが適切でない理由はわかりますが、フォームはすでに車のリストに使用されているため、フォームにGET /car/は使用できません。GET /car/新車用。

要するに、私の質問は、「「リソースフォームの作成」のRESTful URLとは何ですか?」です。

少し関係がありますが、Webサービスであっても、事前にスキーマを知っているクライアントに依存することが常に賢明であるとは限らないため、Webサービスでも、クライアントがリソースの現在のリソースを要求する方法が必要になる場合があります。スキーマ。AFAICS、これは、作成フォームを取得する必要がある同様の状況です(つまり、フォームは、リソースを作成するためのPOSTクエリを作成する方法を説明するスキーマのようなものです)。ここでの私の考え方は正しいですか?

4

2 に答える 2

2

私はいつも「フォーム」自体はリソースではないと思っていたので、/<name>/new大丈夫です。フォームはAPIの通常の要素ではありません。スライドの作者はそれを「悪い」リストに載せましたが、正しいものを提供しませんでした-彼はとても落ち着いていたので、そのようなケースについて考えるのを忘れていたと思います。

于 2012-09-22T00:05:50.653 に答える
2

REST は、URI が 1 つの一意のリソースを識別し、自己記述的である限り、URI がどのように見えるかについてあまり気にしません。それらの基準を満たし、それを超えて、それは個人的な好みです. 動詞を使用することが理にかなっている場合、URI で動詞を使用することを禁止するものは何もありません。

わずかに関連するメモに関して、フォームがスキーマであることを示唆しているのはメディアタイプです。RESTful アーキテクチャは、クライアントとサーバーの両方が、アプリケーションの状態を表すために使用されるメディア タイプを理解することに関係しています。

REST API は、リソースを表し、アプリケーションの状態を駆動するために使用されるメディア タイプの定義、または既存の標準メディア タイプの拡張リレーション名および/またはハイパーテキスト対応マークアップの定義に、その記述作業のほとんどすべてを費やす必要があります。どの URI でどのメソッドを使用するかを説明するのに費やした労力は、メディア タイプの処理規則の範囲内で完全に定義する必要があります (ほとんどの場合、既存のメディア タイプによって既に定義されています)。

詳細はこちら: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

これは、REST を定義した Roy Fielding の言葉です。一般に、メディア タイプは拡張可能である必要があります。つまり、必要な場合を除き、すべての変更が追加され、古いクライアントが壊れないようにする必要があります。

于 2012-09-22T06:51:27.390 に答える