避免使用DELETE和PUT是一种好的restful URL设计吗?

避免使用DELETE和PUT是一种好的restful URL设计吗?,rest,url,http-put,http-delete,Rest,Url,Http Put,Http Delete,我读了一个restful服务的示例,它只使用了两个HTTP方法:get post。 例如,服务器上有一个任务列表。要设计restful URL,我们可以使用: www.example.com/task GET. return all the task list. www.example.com/task/id GET. return the specific task. www.example.com/task/create GET. return a task form. www

我读了一个restful服务的示例,它只使用了两个HTTP方法:get post。 例如,服务器上有一个任务列表。要设计restful URL,我们可以使用:

www.example.com/task    GET. return all the task list. 
www.example.com/task/id  GET. return the specific task.
www.example.com/task/create   GET. return a task form.
www.example.com/task/create   POST. post the data from task form page.
www.example.com/task/update/id  GET. update a task with id, return a task form page.
www.example.com/task/update/  POST. update the task from the task form page.
www.example.com/task/delete/id GET. delete the task with ID.
这样,URL就非常清晰,用户可以理解URL的含义。 这是restful URL定义的良好实践吗

我们应该使用PUT、DELETE操作吗?如果是这样,如何设计向上的URL? 谢谢

我认为更好的API应该是使用HTTP动词来描述每个动作应该做什么的API

我还认为最好在前面加上实体ID(
/task/ID/update
vs
task/update/ID
),因为它非常明确地表明我们是在实体上行动的

www.example.com/task    GET. return all the task list. 
www.example.com/task/id  GET. return the specific task.
www.example.com/task/create   GET. return a task form.
www.example.com/task/create   POST. post the data from task form page.
www.example.com/task/update/id  POST. update a task with id, return a task form page.
www.example.com/task/update/  PUT/POST. update the task from the task form page.
www.example.com/task/delete/id POST/DELETE. delete the task with ID.
我认为更好的API应该是使用HTTP动词来描述每个动作应该做什么的API

我还认为最好在前面加上实体ID(
/task/ID/update
vs
task/update/ID
),因为它非常明确地表明我们是在实体上行动的

www.example.com/task    GET. return all the task list. 
www.example.com/task/id  GET. return the specific task.
www.example.com/task/create   GET. return a task form.
www.example.com/task/create   POST. post the data from task form page.
www.example.com/task/update/id  POST. update a task with id, return a task form page.
www.example.com/task/update/  PUT/POST. update the task from the task form page.
www.example.com/task/delete/id POST/DELETE. delete the task with ID.
这个例子几乎是好的

  • GET-获取资源,GET请求不会更改任何内容。因此,使用它来只读数据,并获取静态资源,如html页面
  • POST-to提交更改
  • 删除-使用它支持REST类型,但也可以使用POST never use GET进行删除操作
这个例子几乎是好的

  • GET-获取资源,GET请求不会更改任何内容。因此,使用它来只读数据,并获取静态资源,如html页面
  • POST-to提交更改
  • 删除-使用它支持REST类型,但也可以使用POST never use GET进行删除操作
这就是处理任务所需要的所有方法

  • 使用名词,但不要使用动词
  • 使用复数名词
  • 使用HTTP动词(GET、POST、PUT、DELETE)执行CRUD
这就是处理任务所需要的所有方法

  • 使用名词,但不要使用动词
  • 使用复数名词
  • 使用HTTP动词(GET、POST、PUT、DELETE)执行CRUD

使用
GET
导致删除是一个非常糟糕的主意。如果一个网络爬虫(例如谷歌)曾经意外地被指向你的服务(通过在某处发布的一个错误链接),它可能会通过一切方式删除它(因为它会自动
GET
s任何它能得到的链接),使用
GET
导致删除是一个非常糟糕的主意。如果一个网络爬虫(例如谷歌)曾经意外地被指向你的服务(通过在某处发布的一个错误链接),它可能会通过一切方式删除它(因为它会自动
GET
s任何它可以得到的链接)编辑:我相信你指的是CRUD而不是Edited:我相信你指的是CRUD而不是CRUD
www.example.com/tasks     GET return all the task list. 
www.example.com/tasks     POST Create a new task
www.example.com/tasks/id  GET return the specific task.
www.example.com/tasks/id  PUT update the task
www.example.com/tasks/id  DELETE delete the task with ID.