维护人群的架构?

时间:2012-04-12 00:35:58

标签: rest

我的情况如下:

Person belongsTo Group
Group hasMany People

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

我正在尝试决定最符合REST的网址。现在我的网址有点令人困惑,这让我觉得它们不是RESTful。

我的功能允许用户:

  1. 获取一个人,一个群组中的所有人或所有人
  2. 向组添加新人(需要指定组)
  3. 编辑个人信息
  4. 删除某人
  5. 我的网址是:

    GET

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

    PUT

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

    POST

    /people/person/id -> Edit a Person
    

    DELETE

    /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吗?

1 个答案:

答案 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用户,无论是您还是第三方。