0

編集をどこに置くか、RESTアプリケーションによる新しいキーワードをどこに置くか疑問に思っています。プロジェクトでexpress-resourceを使用します。デフォルト設定は、次のとおりです。

GET     /forums              ->  index
GET     /forums/new          ->  new
POST    /forums              ->  create
GET     /forums/:forum       ->  show
GET     /forums/:forum/edit  ->  edit
PUT     /forums/:forum       ->  update
DELETE  /forums/:forum       ->  destroy

このソリューションには問題があります。新しい編集の背後に実際のリソースがありません。つまり、URLはリソースを参照し、スラッシュの後はサブリソースになります。

例:次http://my.example.com/users/1を表します:

var firstUser = {
   name: "John Smith",
   birthDate: new Date(1952,10,4),
   hobbies: ["skiing", "football"],
   ...
}

そしてhttp://my.example.com/users/1/birthDate表す:

firstUser.birthDate

しかし、http://my.example.com/users/1/editそのような特性はありません。

firstUser.edit

したがって、この概念には何か問題があります。

これらのキーワードの本当の場所はどこですか?queryStringまたはヘッダーで?

4

2 に答える 2

1

REST APIの観点からは、これらはリソースの表現に関連していないため、どこにも存在しません。これらはリソースに対するアクションであるため、使用されるHTTPメソッドによって表現されます。APIを使用する外部クライアントを作成する場合は、これらは必要ありません。

UIのようなものを提示できるように、このタイプの機能のサポートを提供する必要がある可能性がありますが、それは特定のアプリケーションの関心事であり、API自体の関心事ではありません。その時点でそれは裁量になりますが、それは従来の慣行からかなり外れているので、私は確かにヘッダーの使用を避けます。しかし、ヘッダーからは、実際にはURIパスを意味しているように見えます。これらの2つのうち、パスは、あらゆるタイプのUIを個別のリソースとして明確に定義し、クリーンなAPIとは別にして、APIの一部でクエリ文字列を使用するとより厳密になるため、より適切なオプションだと思います(誤って)基になるリソースに関連付けます。

于 2012-10-29T12:51:38.143 に答える
0

1年かそこら後にいくつかの更新:

  • 編集と新規はハイパーリンクである必要があります
    • これらのリンクは、可能な操作呼び出しの単なる表現です
    • それらに従うことにより、意図されたリソース状態の表現を送信することによって、および/または適切なメソッドを呼び出すことによって、それらが属するリソースを操作することが可能です。
  • これらの用語はリソースではなく、独自のURL(リソース識別子)を持っていません

アドバイスをありがとうマットホイップル!

RESTを学ぶ最良の方法は、フィールディングの論文を読むことだと思います。そこには多くのチュートリアルがありますが、これらのほとんどの作者は実際にはRESTを理解していません。

于 2012-10-29T12:59:59.250 に答える