2

我正在努力创建一个使用 Spring MVC 的基于 Java 的 RESTful API。

现在对于一些 API 端点——需要多个不同的参数......我不是在谈论值列表——更像是 parameter1、parameter2、parameter3、parameter4 等等——其中所有 4 个(或更多)参数也具有不同的数据类型。

如何为上述场景设计 API 端点 URL,例如 4 个单独的输入参数?有没有推荐的方法/最佳实践来做到这一点?还是我只是将这 4 个值连接起来,每对值都用“/”之类的分隔符分隔?

从用户评论编辑:

示例:我必须根据 4 个输入参数——(整数)用户 ID、(整数)文件 ID、(字符串)类型和(字符串)用户类型来检索自定义对象(“文件”)。我应该简单地创建一个像“getfile/{userid}/{fileid}/{type}/{usertype}”这样的 REST 端点——还是有更好的(或推荐的方法)来构建这样的 REST 端点?

4

2 回答 2

3

在 REST 中,首先考虑资源并提出不可变的永久链接(不会更改)来识别该资源。

因此,在您的示例中(在评论中),您说要检索用户和类型的文件资源(文件类型或用户类型?)

因此,从足够的信息开始识别资源。如果 id 是唯一的,那么无论拥有该文件的用户如何,这都足以识别资源:

/files/{fileId}

如果文件可以更改所有者,这对于 url 也很重要 - 请记住,我们只想使用所需的组件来识别资源,以便它可以成为永久链接。

您还可以列出特定用户的文件:

/users/{userId}/files/

响应将包含文件列表,列表中的每个项目都将包含指向文件的链接 (/files/{fileId})

如果由于某种原因文件 id 不是唯一的,但仅在用户的上下文中是唯一的(文件不会更改所有者和用户内的 id 增量 - 奇怪),那么您将需要这些组件来识别资源:

/users/{userId}/files/{fileId}

另请注意基于描述的顺序。在那种奇怪的情况下,我们说文件在逻辑上由用户包含和标识,这也是 url 结构中的包含。

希望有帮助。

于 2013-03-07T12:55:28.737 回答
0

一个听起来不错的GET请求file/{usertype}/{user}/{type}/{fileid}

于 2013-03-07T05:21:35.337 回答