请原谅这个简单的问题,但似乎大多数搜索试图告诉我哪些方法是针对哪些行为而设计的。例如,创建&编辑是PUT,从复数创建(文章)是POST,依此类推。 (如果您不同意这一点,我只是以它为例。)
话虽如此,您如何启动资源编辑?要使用已知URL创建资源,您需要在不存在的URL上执行GET。例如,GET:mysite/resource_one
。然后返回一个表单,表单将PUT提交到同一地址和bam,创建资源。
现在如何编辑相同的资源?有4个方法,专为CRUD设计,我遇到了问题,因为我似乎只能想到一种方法。要转到 新 资源。例如,GET:mysite/resource_one/edit
。然后,它会显示包含现有数据的表单,您可以对其进行编辑,然后将数据提交给GET:mysite/resource_one
。在一个似乎被设计为允许在资源上执行完整CRUD而不留下所述资源的系统中,这似乎很奇怪。
那么..什么是正确的方法?我的意思是,如果GET:mysite/resource_one/edit
是正确的,那么为什么不GET:mysite/resource_one/delete
,GET:mysite/resource_two/create
等等。
非常感谢!
答案 0 :(得分:4)
URL始终代表资源,而不是动作。因此,虽然mysite/resource_one/edit
可能是启动编辑资源的页面的正确URL,但它不是REST API本身的一部分,它是使用该REST API来操作该资源的Web应用程序的一部分。此外,在该示例中,mysite/resource_one
将是资源的混淆表示。
要创建新资源,请在父资源上使用POST,请求正文包含新资源的数据。响应包含新创建的资源的URL。
要更新现有资源,请在资源URL上使用PUT,请求正文包含资源数据的完整或部分更新。