创建我的第一个REST API,我有一个问题。我有一个资源场所:
/venues
每个场地都有客人:
/venues/1/guests
这是我感到困惑的地方。如果我想更新访客资源,最好这样做:
POST /venue/1/guests/1/
或
POST /guests/1
第二个选项更短,因为客人ID是唯一的,第二个选项工作得很好。但首先是更明确的。
所以我被困在哪条路上。
由于
答案 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资源需要管理
可以使用POST/GET/DELETE/PUT (CRUD operations)
独立管理这些资源POST /venues/
GET /venues/
POST /guests/
GET /guests/
此外,您可以使用CRUD将一个资源映射到另一个资源,如
POST /venues/[venue-id]/guests/[guest-id]/