我正在按照 REST 架构风格构建 Web 服务。我正在使用 JAX-RS 来简化它。然而,这个问题并不关心技术,而是正确使用资源路径。
我在我的应用程序中创建了一些资源,例如测验、问题和问题反馈。
我已经创建了路径,例如
/测验
/question/1
等等。现在,我已经看到一些公开路径的 Web 服务 API,例如 /approved
或 /questions/approved
。路径的批准部分似乎更像是问题可能具有的属性(在这种情况下),我想知道这是否可以,以及使它成为请求参数和像这样的路径的一部分之间的边界在哪里?
是否可以在 Web 服务中公开以某种方式公开系统中预期资源之一的路径,如本例 Question
,但通过 /approved 这样的路径
除了正常的 /questions
路径?规则是什么,这应该是怎样的?
如果没有人问我,我会创建一个类似 /questions?type=approved
的路径:GET。
因为批准不是我系统中的资源。或者是否可以创建公开资源的路径...但不要直接使用资源名称。
最佳答案
你问的是只有通过附加信息才能理解的路径是否可以。嗯,它们并没有错误,但我不会选择它们。
你的问题是(用我的话来说):
Give me all the questions that have the additional feature of being approved.
这归结为两个步骤:
第一步
得到所有个问题。
GET /questions
第二步
其中只有获得批准的那些。
GET /questions?approved=true
这很自然。
相比之下,为什么第二步的结果应该是/approved
呢?这与 /questions
有什么关系?没有明显的方法来回答这个问题。虽然在技术上可以使用像 /pink-elephants
这样奇怪的路径,它应该转化为“给我所有已批准的问题”,但这不是我推荐的。
关于java - RESTful 网络服务中的资源路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13362941/