2010-06-11 27 views
0

我正在一个研究小组中工作,我们打算发布通过RESTful API在Web上开发的一些算法的实现。大多数这些算法适用于中小型数据集,在很多情况下,我们服务的用户可能想在同一个数据集上运行多个查询(使用不同的参数),因此对我来说,允许用户上传它们预先提供数据集并在稍后查询它们。从这个意义上说,数据集可能是我的API中的一个资源,算法可能是另一个。RESTful API设计问题 - 应该如何让用户创建新的资源实例?

我的问题是:我应该如何让用户上传自己的数据集?我不能简单地让用户上传他们的数据到/dataset/dataset_id,因为让用户发明自己的dataset_id可能导致ID冲突,并且用户意外覆盖彼此的数据集。 (我相信最常用的数据集ID之一是test)。我认为一个理想的方法是拥有一个专用的URL(如/dataset/upload),用户可以在其中发布数据集,响应将包含存储数据集的唯一ID,但我不确定它是否违反基本REST的原则。处理这种情况的首选方式是什么?

回答

3

根据this你不应该有专用的URI,而是把POST作为/ dataset /作为创建。

+0

大,感谢 - 和耻在我看来,通常它是维基百科,我首先寻找的是事物,但我从来没有想到它可以提供对REST API设计原则的见解。 – 2010-06-11 13:49:07

1

你的想法是不违反REST原则:)

的首选方法是使用POST和Location头中的路径返回到新创建的资源。

在你的情况。客户端POST到/ dataset。服务器生成的标识符,并返回位置报头到所述数据集的参考:

位置:/数据集/ 1234

的响应的状态应该是201(创建)