我的情况如下:
Person belongsTo Group
Group hasMany People
When creating a new Person, a Group needs to be specified.
我正在尝试决定最符合REST的网址。现在我的网址有点令人困惑,这让我觉得它们不是RESTful。
我的功能允许用户:
我的网址是:
/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
我可以做些什么来使我的网址更加RESTful?有没有人有任何建议?
我问这个的原因是因为我想到了其他结构,看看一切都是由HTTP请求决定的。例如:
/people/id
GET retrieves the person, POST updates the person, DELETE removes the person.
在没有“群组”的情况下,它是如此简单。但在我的“群组”案例中,我需要在/people/all
中指定参数,例如所有以获取所有人或{{1}中的 / group / id 指定POST新人员的位置。我可以添加这样的参数并保持RESTful吗?
答案 0 :(得分: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用户,无论是您还是第三方。