3

我正在构建一个遵循 REST 架构风格的 Web 服务。我正在使用 JAX-RS 来简化它。然而,这个问题并不关心技术,而是正确使用资源路径。

我在我的应用程序中创建了一些资源,例如测验、问题和问题反馈。

我已经创建了路径,例如

/quiz /question/1

等等。现在,我已经看到了一些暴露路径的 Web 服务 API,例如/approved/questions/approved. 路径的批准部分似乎更像是问题可能具有的属性(在这种情况下),我想知道这是否可以,以及将其作为请求参数和像这样的路径的一部分之间的界限在哪里?

是否可以在 web 服务中公开路径,以某种方式公开系统中的预期资源之一,例如在这种情况下Question,但是通过/approved除了正常路径之外的/questions路径?规则是什么,这应该是怎样的?

如果没有人问我,我会创建一条类似的路径/questions?type=approved:GET。

因为已批准不是我系统中的资源。还是可以创建公开资源的路径...但不要直接使用资源名称。

4

1 回答 1

2

您在询问只能通过附加信息才能理解的路径是否可以。好吧,他们没有,但我不会选择他们。

你的问题是(用我的话):

给我所有具有被批准附加功能的问题。

这归结为两个步骤:

第一步

获取所有问题。

GET /questions

第二步

其中只有那些已经被批准的。

GET /questions?approved=true

这是很自然的。

相反,为什么第二步会导致/approved?这有什么关系/questions?没有明显的方法可以回答这个问题。虽然从技术上讲,即使是奇怪的路径也可以使用,比如/pink-elephants应该转化为“给我所有批准的问题”,但这不是我推荐的。

于 2012-11-13T15:04:01.710 回答