我正在指定一个具有可以查看,创建,编辑或删除的资源的休息系统。我正在尝试尊重rest和http方法的语义。
如果资源由http://mydomain.org/oid_bar标识,我可以使用以下方法进行管理: - PUT创建或更新此资源 - DELETE删除此资源 - GET返回此资源
但是如果你需要创建一个你还不知道oid的新资源,你将如何进行?将对象添加到数据库并且主键由数据库自动生成时,这种情况非常常见。就我而言,我的后端是一个数据库。
我想到了一个带有ressource http://mydomain.org/next_free_oid的解决方案,它返回下一个免费的oid并递增其值。此资源只会响应POST请求。使用返回的oid,我可以向目标URL发送PUT请求。
另一种解决方案是向http://mydomain.org/发送POST请求。此请求将使用生成的oid创建资源并返回oid。
之前解决方案的一个变体是向http://mydomain.org/create_object
发送POST请求第三种解决方案是我最喜欢的解决方案。但它是否与HTTP / REST兼容以使用URL作为服务?
欢迎发表评论。
此致 的Mickaël
答案 0 :(得分:3)
然后,您应该返回状态代码201 Created,并将响应的位置标头设置为指向新创建的资源。
我正在寻找一些支持自己的链接...
编辑:如果您愿意,您也可以选择返回新创建的资源,但设置位置标题仍然是一个好主意。
尝试以下链接,虽然很难看到树木:
http://jcalcote.wordpress.com/2008/10/16/put-or-post-the-rest-of-the-story/
我个人建议使用RESTful Web Services Cookbook,因为它非常简单易懂地解释了这些内容。
答案 1 :(得分:0)
另外,不要将http://mydomain.org/create_object
中包含动词的URI包含在内 - 您的URI应代表名词,例如编辑表单,而不是表示“在此处发送数据以执行此操作”的动词。对于您的动词,请选择适当的HTTP方法。 [RFC2616]