在考虑rest
的同时,我正在考虑对我的api提出最合乎逻辑的请求,但我无法理解这三个选择中哪一个是正确的:什么是最好的设计对于请求,假设我要从触发请求的某个用户10
发送user2
?
1)
POST /pay
body: {"username": "user2", "amount": 10}
2)
POST /pay/users/user2
body: {"amount": 10}
3)
POST /pay/users/user2/10
我不知道网址中应该包含多少信息,而不知道网址中应包含多少信息。
答案 0 :(得分:3)
假设您有许多用户和一些用户可以执行的功能。
所以你的api可能就像:
GET /users # get user list
POST /users + {"name": "John"} # create user
DELETE /users/{userId} # remove user
GET /users/{userId} # get user by id
GET /users/{userId}/payments # get users payments
POST /users/{userId}/payments + {"amount": 10} # submit new payment
GET /users/{userId}/payments/{paymentId} # get users payment details
正如您所看到的,它是一个非常简单的资源树。
答案 1 :(得分:1)
我建议您查看restful-api-guidelines
您希望在URL中添加Canonical Identifier以及正文中的任何其他数据。 对于POST(用于创建新资源),Canonical Identifier通常尚不存在,因此它不需要。 然后,服务器创建一个并将其返回到位置标题中的客户端。
如果您要更新而不是插入,则应使用PUT或PATCH。如果用户名是您的标识符,则应使用选项2。标识符通常不可编辑。
由于您“添加”了新的付款,我建议您使用选项1.但我会将其称为付款,并可能会添加有关付款的更多信息。