2

私は自分のプロジェクトのパブリック API の作業を開始し、それを RESTful にすることを考えました。
一部の API (Twitter など) が実際には RESTful ではないという記事をよく目にしますが、自分の API をできるだけ RESTful にしたいと考えています (それほど単純ではないようです :) )。

現在、私が考えていることが 1 つあります。たとえば、ユーザーと映画の 2 つのリソースがあり、各ユーザーには映画のリストがあります。現在接続しているユーザーのすべての映画を取得するための REST API を作成したいと考えています。これを設計する正しい方法は?
(XXX はある種の認証トークンです。どの認証を実装するかはまだ決めていません)

  1. GET /movies?token=XXX
  2. GET /users/XXX/movies

それとも何か他のものを一緒に?

また、誰かが私にこの主題に関する良い読み物を教えてくれれば、私のパブリック API を可能な限り RESTful に作成するのに役立つ何かがあれば、それは大きな助けになるでしょう!

4

2 に答える 2

4

私はLeonardRichardsonによるRestfulWebServicesが本当に好きでした。彼は、REST、一部のサイトでの誤用、正しく使用する方法、クエリ文字列を使用する場合とURIパスに情報を入力する場合について説明しています。彼は認証についてもカバーしていますが、彼はそのトピックについて簡単に説明しています。彼はRESTがSOAPよりも優れている理由を説明するのにかなりの時間を費やしています-私はそれを楽しんでいましたが、他のレビューアはそれが過度であると感じているようです。彼はほとんどの例でRuby/Railsを使用しています。

2つの例のうち、最初の例よりも「GET / users / XXX/movies」の方が好きです。クエリ文字列の使用は、検索やオプションのパラメータに適しています。google.com/?q=batmanや/users/ XXX / movies?page=2のようなもの。特定のユーザーの映画を見ているので、URIがその構造に一致することは理にかなっており、オプション2はそれを行います。

一部のサイトは、次のようなメソッドを提供するため、真にRESTfulではありません。

GET /GetUser?token=XXX
GET /SaveUser?token=XXX&name=YYY

真にRESTfulなサービスは、既存のHTTPコマンドに従い、関数ではなくリソースを操作します。この本によると、HTTPプロトコルに従っている場合、通常、サービス名に「get」や「save」などの単語は必要ありません。これらはHTTPによって提供されます。

GET /user/XXX
PUT /user

お役に立てれば。良いWebリソースはありませんが、その本を試してみることをお勧めします。

于 2012-11-30T15:21:16.753 に答える
2

ロイ・トーマス・フィールディングの博士論文「Architectural Styles and the Design of Network-based Software Architectures 」を読むことは、REST アーキテクチャ スタイルを理解するための良い方法であることがわかりました。最初は難しそうに見えますが、より良い API を設計するのに役立つ洞察がたくさんあります。

于 2012-11-30T18:23:58.257 に答える