REST API子资源

时间:2014-02-04 02:38:02

标签: api rest restful-url restful-architecture

创建我的第一个REST API,我有一个问题。我有一个资源场所:

/venues

每个场地都有客人:

/venues/1/guests

这是我感到困惑的地方。如果我想更新访客资源,最好这样做:

POST /venue/1/guests/1/

POST /guests/1

第二个选项更短,因为客人ID是唯一的,第二个选项工作得很好。但首先是更明确的。

所以我被困在哪条路上。

由于

2 个答案:

答案 0 :(得分:2)

两者都是正确的方法,但是,如果你向客户(客户开发者)保证,无论访问的地点如何,访客ID总是独一无二的,我会选择

POST /guests/{guestId}

我通常会用这个:

POST /venues/{venueId}/guests/{guestId}

当我必须更改该特定地点的客人的状态时。例如,ID为1的Guest John Doe对于具有venueId 1的场所已经RSVP'为“yes”然后我将数据发布到以下url(这只是假设您可以添加的唯一内容/对于给定地点的给定客人的更新是RSVP数据):

POST /venues/1/guests/1
request body: {"RSVP", true}

但如果我想将John Doe的名字更新为John Foo,我可能会这样做

PUT /guests/1
request body: {"firstName":"John","lastName":"Foo"}

我希望有所帮助!

答案 1 :(得分:1)

您可以认为有两个RESTful资源需要管理

  • A)场地和
  • B)嘉宾

可以使用POST/GET/DELETE/PUT (CRUD operations)

独立管理这些资源
POST /venues/
GET /venues/
POST /guests/
GET /guests/

此外,您可以使用CRUD将一个资源映射到另一个资源,如

POST /venues/[venue-id]/guests/[guest-id]/