0

设计一个以用户、问题和答案作为我的“名词”的 RESTful API,我不确定哪个 URL 最适合检索用户问题的(计数)未读答案。

比如说,当前用户(ID:42)已经问了 4 个问题,并且自从他上次登录以来,对任何这些问题都给出了 2 个答案。

检索这个数字 2 的合理 URL 是什么?我已经考虑过这些(尽管范围比这些示例中的措辞更相关)

  • /users/42/questions?feature=unread_anwers
  • /answers?unread_by=42&question_owner=42(这对我来说似乎很不安)
  • /answers?since=<%USER:last_login%>&question_owner=42
  • /users/42(并将 unread_answers 作为用户对象的属性)
  • /users/42/questions/answers?status=unread(这会破坏 /noun/id/noun-Pattern)
  • /users/42/questions/all/answers?status=unread(更倾向于“正确”的模式,但似乎仍然是错误的)
  • 任何其他合理的网址?

我目前倾向于第一个建议,尽管我仍然犹豫不决。我在这个问题上找不到任何最佳实践资源;并想知道是否有设计这种情况的正确方法。

任何意见或方向将不胜感激!

编辑: 我的同事建议...

  • /users/42/unread_answers(添加一个伪名词,我认为不应该)
  • /users/42/answers?status=unread(打破层次结构,因为 /users/42/answers 实际上应该返回用户 42 给出的答案)
4

1 回答 1

1

这是正确的选项:

/users/42/questions/all/answers/unread 

每个层代表一个资源或一组资源。REST 的主要目标是让每个 URL 成为资源的唯一标识符。一旦您开始将查询参数放入其中,您就打破了这个目标,它就RPC结束了HTTP。有关更多详细信息,请参阅“这不是 REST,这是 RPC”

于 2013-09-03T00:53:55.160 回答