REST,避免网址冗余

时间:2014-07-15 15:50:36

标签: rest url split

为避免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

将在更多请求中分割,这意味着更大的带宽使用。

那么,最好的“模式”是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

GET /users/{userId}
GET /questions/{questionId}
GET /questions?userId={userId}
GET /answers?userId={userId}&questionId={questionId}

在现实世界中,这个解决方案可能不够,但这显然是家庭作业,所以应该没问题。