为避免REST服务的URL写入冗余,最佳做法是什么? 例如,假设我有一个用户,该用户可以发布问题,一些答案可以与此问题相关。我正在做的是:
/users : List of all users
/users/1234 : Description of user with id = 1234
/users/1234/questions : List of questions asked by this user
/users/1234/questions/5678 : Question identified by id = 5678 asked by user 1234
/users/1234/questions/5678/answers : Answers of this questions
/users/1234/questions/5678/answers/1111 : Answer 1111 of question 5678 asked by user 1234
等等......
问题是我也有这些终点:
/questions/5678 : Question with id = 5678
/questions/5678/answers
/questions/5678/answers/1111
...
我记得任何项目必须具有唯一的访问者才能符合RESTful最佳实践,那么,什么是最佳解决方案?
我发现第二种方式更优雅,只有:
/users/AAAA/
/users/AAAA/questions
/questions/XXXX
/questions/XXXX/answers
/answers/YYYY
但就性能而言(我正在开发移动应用程序),这不是最好的。为什么?因为这个要求:
/users/1234/questions/5678/answers/1111
将在更多请求中分割,这意味着更大的带宽使用。
那么,最好的“模式”是什么?
谢谢!
答案 0 :(得分:0)
GET /users/{userId}
GET /questions/{questionId}
GET /questions?userId={userId}
GET /answers?userId={userId}&questionId={questionId}
在现实世界中,这个解决方案可能不够,但这显然是家庭作业,所以应该没问题。