如何使用许多输入参数设计RESTful URL

时间:2013-03-07 04:46:58

标签: api rest spring-mvc restful-url restful-architecture

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

现在对于一些API端点 - 需要多个不同的参数...我不是在谈论一个值列表 - 更像是参数1,参数2,参数3,参数4等等 - 其中所有4个(或更多)参数也有不同的数据类型。

如何为上述场景设计API端点URL,例如4个独立的输入参数?这样做有推荐的方法/最佳做法吗?或者我只是简单地连接4个值,用一对分隔符(如“/”)分隔一对值?

来自用户评论的编辑:

示例:我必须基于4个输入参数检索自定义对象('文件') - (整数)userid,(整数)fileid,(String)类型和(String)usertype。我应该简单地创建一个REST端点,如“getfile / {userid} / {fileid} / {type} / {usertype} - 还是有更好的(或推荐的方法)来构建这样的REST端点?

2 个答案:

答案 0 :(得分:3)

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

那么,在你的例子中(在评论中),你说你想要为用户检索文件资源并输入(文件类型或用户类型?)

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

/files/{fileId}

如果文件可以更改所有者,那么这也是重要的 - 请记住,我们希望仅使用所需的组件来识别资源,这样它就可以成为固定链接。

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

/users/{userId}/files/

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

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

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

还要注意基于描述的顺序。在那个奇怪的情况下,我们说文件在逻辑上包含并由用户ID,并且也是url结构中的包含。

希望有所帮助。

答案 1 :(得分:0)

GET的{​​{1}}请求听起来不错

相关问题