Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
2年前关闭。
Improve this question
我们目前正在设计内部REST API。我们有以下用例:
用户(109)想要读取他已发送给另一个用户(110)的消息通过身份验证(在执行GET请求时)收到的 token 凭证,应用可以识别该读取用户(109) 在此示例中,我们假设用户109是发送方,而用户110是接收方
从用户角度总结“给我我(109)已发送到110的邮件”
我们想到了以下URI,但我们无法决定采用哪个URI:
所有链接是“上下文敏感的”,其将链接之一发送到接收器(110)将产生执行GET请求的不同结果。
我想知道您对使用哪个URL的意见。
任何帮助,高度赞赏。
干杯
马塞尔
记录在here中。
Twitter也这样做:
记录在here中。
这两个URL均基于身份验证推断已登录的用户。是的,如果用户共享缓存,它将击败缓存,但是IMO,这是可以的。是否打破REST的“资源标识”约束可能尚有争议。 this问题的答案以及随后的评论向我展示了为什么有争议。
实际上,在这些选项中,您确实提到了“上下文无关”的URL:
该客户端将始终从109到110返回消息。但是,一个客户端希望在查看“已发送”消息时看到此结果,而另一客户端则希望在查看“已接收”消息时看到此结果。有点奇怪吗?另外,在服务器上,您必须检查经过身份验证的用户是109 | 110,否则抛出
我会喜欢这样的:
返回所有已发送的邮件。和:
返回发送到110的邮件。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
2年前关闭。
Improve this question
我们目前正在设计内部REST API。我们有以下用例:
用户(109)想要读取他已发送给另一个用户(110)的消息
从用户角度总结“给我我(109)已发送到110的邮件”
我们想到了以下URI,但我们无法决定采用哪个URI:
a) GET http://localhost:9099/api/mails/109?receiverUserId=110
b) GET http://localhost:9099/api/mails?senderUserId=109&receiverUserId=110
c) GET http://localhost:9099/api/mails?receiverUserId=110
d) GET http://localhost:9099/api/mails/me/to/110 (when logged in as 109 via token credentials we know that "me" is 109)
f) GET http://localhost:9099/api/mails/109/to/110 (explicit request, e.g. for admins … has to be guarded against illegal access)
所有链接是“上下文敏感的”,其将链接之一发送到接收器(110)将产生执行GET请求的不同结果。
我想知道您对使用哪个URL的意见。
任何帮助,高度赞赏。
干杯
马塞尔
最佳答案
对于相同的URL,可以对不同的客户端做出不同的响应。
StackExchange可以做到这一点:
GET /me/comments/{toid}
记录在here中。
Twitter也这样做:
GET /statuses/home_timeline
记录在here中。
这两个URL均基于身份验证推断已登录的用户。是的,如果用户共享缓存,它将击败缓存,但是IMO,这是可以的。是否打破REST的“资源标识”约束可能尚有争议。 this问题的答案以及随后的评论向我展示了为什么有争议。
实际上,在这些选项中,您确实提到了“上下文无关”的URL:
GET /api/mails?senderUserId=109&receiverUserId=110
该客户端将始终从109到110返回消息。但是,一个客户端希望在查看“已发送”消息时看到此结果,而另一客户端则希望在查看“已接收”消息时看到此结果。有点奇怪吗?另外,在服务器上,您必须检查经过身份验证的用户是109 | 110,否则抛出
401 UNAUTHORIZED
。我会喜欢这样的:
GET /mail/sent
返回所有已发送的邮件。和:
GET /mail/sent?to=110 (like applying a 'filter' to /mail/sent)
OR
GET /mail/sent/110 (clean URL)
返回发送到110的邮件。
关于api - REST API设计-查询邮件数据-选择哪种毒药?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10137089/
10-12 13:35