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. 删除一个人

我的网址是:

得到

/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.

在没有“组”的情况下,就这么简单。但在我的“组”案例中,我需要指定参数,例如all in/people/all以获取所有人员或/group/id in/people/groups/id以指定在何处发布新人员。我可以添加这样的参数并仍然保持它是 RESTful 的吗?

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 回答