2013-03-07 22 views
2

我正在努力创建一个使用Spring MVC的基于Java的RESTful API。如何设计带有许多输入参数的RESTful URL

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

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

编辑:

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

+0

我认为你需要指定资源以及这些参数是为了帮助你的人。 – bryanmac 2013-03-07 04:49:55

+0

@ bryanmac--好的一个例子是我必须根据4个输入参数 - (Integer)userid,(Integer)fileid,(String)类型和(String)usertype检索自定义对象('文件')。我应该简单地创建一个REST端点,如“getfile/{userid}/{fileid}/{type}/{usertype} - 还是有更好的(或推荐的方法)来构建这样的REST端点? – Arvind 2013-03-07 04:57:08

回答

3

在REST开始。

所以,在你的例子(注释),你说你想为用户检索文件资源并键入(文件类型或用户类型?)

因此,启动wi只需要足够的信息来识别资源。如果ID是唯一的,那么这是足够的,无论以确定谁拥有该文件的用户的资源:

/files/{fileId} 

这也是作为URL重要的,如果一个文件可能改变业主 - 请记住,我们要识别资源只需要所需的组件,以便它可以成为固定链接。

你也可以列出文件为特定用户:

/users/{userId}/files/ 

响应将包含文件的列表以及每个列表将包含在文件中的链接(/文件/ {FILEID这些项目的})

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

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

另请注意基于说明的订单。在那个奇怪的案例中,我们说这些文件是逻辑上包含的,并由用户标识,这也是网址结构中的遏制。

希望有所帮助。

0

A GET请求file/{usertype}/{user}/{type}/{fileid}通过思考资源,未来与永恒不变的固定链接(不改变),以确定资源听起来不错

+0

@ ArunPJohny-有没有更好/更优雅的方式来做到这一点?我的意思是,除了要求所有4个参数之外别无选择吗?谢谢.... – Arvind 2013-03-07 06:47:16

+0

我不这么认为,因为你需要所有的4参数,这意味着你将不得不将它们发送到服务器的请求。唯一的问题是如何,但作为休息资源,这是最好的格式恕我直言 – 2013-03-07 06:52:05