我正在按照REST架构风格构建Web服务。我正在使用JAX-RS来简化它。然而,这个问题并不关心技术,而是正确使用资源路径。
我在我的应用程序中创建了一些资源,例如Quiz,Question和QuestionFeedback。
我创建了
等路径 /quiz
/question/1
等等。现在,我已经看到了一些公开/approved
或/questions/approved
等路径的Web服务API。路径的批准部分看起来更像是问题可能具有的属性(在这种情况下),我想知道这是否正常,以及边界在使其成为请求参数和路径的一部分之间的位置?
可以公开Web服务中的路径,以某种方式公开系统中的一个预期资源,例如Question
,但是通过/approved
之类的路径正常的/questions
路径?有什么规则,这应该是怎样的?
如果我没有人问我会创建像/questions?type=approved
这样的路径:GET。
因为已批准不是我系统中的资源。或者可以创建公开资源的路径......但不要直接使用资源名称。
答案 0 :(得分:2)
您问的是,只能通过附加信息理解的路径是否正常。好吧,他们不是错误的,但我不会选择它们。
你的问题是(在我看来):
向我提出所有具有批准额外功能的问题。
这归结为两个步骤:
第一步
获取所有问题。
GET /questions
第二步
其中只有获得批准的人才能获得。
GET /questions?approved=true
这很自然。
相比之下,为什么第二步会产生/approved
?这与/questions
有什么关系?没有明显的方法来回答这个问题。虽然技术上可以使用像/pink-elephants
这样的奇怪路径,这些路径应该转化为“给我所有批准的问题”,但这不是我推荐的。