1

私の状況は次のとおりです。

Person belongsTo Group
Group hasMany People

When creating a new Person, a Group needs to be specified.

私はRESTに最もよく従うURLを決定しようとしています。現在、私のURLはやや混乱しているため、RESTfulではないと思われます。

ユーザーが次のことを行えるようにする機能があります。

  1. 単一の人、グループ内のすべての人、またはすべての人を取得します
  2. グループに新しい個人を追加します(グループを指定する必要があります)
  3. 個人情報を編集する
  4. 人を削除する

私のURLは次のとおりです。

得る

/people/group/id -> Gets all People in a Group
/people/person/id -> Gets a single Person
/people/all -> Gets all People

置く

/people/group/id -> Add a new Person to a Group

役職

/people/person/id -> Edit a Person

消去

/people/person/id -> Delete a Person

URLをよりRESTfulにするために何ができますか?誰か提案はありますか?

私がこれを尋ねる理由は、他の構造について考え、すべてがHTTPリクエストによって単純に決定される方法を確認するためです。例えば:

/people/id

GET retrieves the person, POST updates the person, DELETE removes the person.

「グループ」がない場合、それはとても簡単です。しかし、私の「グループ」の場合、すべての人をGETするためのall inや、新しい人をPOSTする場所を指定するための/ group /idinなどのパラメーターを指定する必要があります。そのようなパラメーターを追加しても、RESTfulを維持できますか?/people/all/people/groups/id

4

1 に答える 1

1

RESTful ルートを実行するための「正しい」方法があるというわけではありません。厳格な規則はないため、すべてはあなた次第ですが、私がそれをどのように構成するかは次のとおりです。人々のために:

GET    /people     -> Returns a list of all people
POST   /people     -> Adds a new person (group would be defined in the POSTed data
PUT    /people/:id -> Updates a person
DELETE /people/:id -> Deletes a person

そして、RESTful エンドポイントとして人を含むグループの場合:

GET    /groups/:id/members -> Gives a list of all people in the group

プレーンな英語 (グループ メンバーの取得) として流れるため、エンドポイントとしてメンバーを選択しましたが、人やその他の説明的な用語を使用することもできます。

RESTful ルートをどのように構築するかを考えるとき、最も重要なことは、最終的な API ユーザーが自分だけでなく、サード パーティでも簡単に理解できるようにすることだと思います。

于 2012-04-12T02:13:37.427 に答える