java - RESTful 网络服务中的资源路径

标签 java web-services rest jakarta-ee jax-rs

我正在按照 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/

相关文章:

java - 如何在java中向表单添加变量并通过doPost获取它们

java - 从数组列表点创建多边形 - 坐标序列?

java - 如何用 Java (ID3) 编辑 MP3 文件?

javascript - 使用javascript调用webservice而不使用jQuery ajax?

web-services - jXchange - 如何开始?

java - REST最佳实践,用于检索元素的特定子集

json - 使用 JSON 和 Wink 的 JAX-RS 客户端/服务器应用程序

java - Apache 弗林克 : Ordered timestamps with parallelism

python - 如何制作一个简单的 Python REST 服务器和客户端?

C# 客户端 - Perl 服务器 - 文件路径区分大小写