这是一个很好的宁静URL设计,以避免使用DELETE和PUT?

时间:2014-10-14 10:37:37

标签: 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.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的含义。 这是一个宁静的URL定义的好习惯吗?

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

3 个答案:

答案 0 :(得分:3)

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.

恕我直言,这是您处理任务所需的所有方法。

  • 使用名词但没有动词
  • 使用复数名词
  • 使用HTTP谓词(GET,POST,PUT,DELETE)进行CRUD

答案 1 :(得分:1)

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            POST. create a new task
www.example.com/task/id/update  GET. update a task with id, return a task form page.
www.example.com/task            PATCH|PUT. update the task from the task form page.
www.example.com/task/id         DELETE. delete the task with ID.

我想说一个更好的API就是实际使用HTTP动词描述每个动作应该做什么的API。

我还认为最好以实体ID(/task/id/update vs task/update/id)作为序言,因为它使得我们非常明确地表明我们正在对一个实体采取行动。

答案 2 :(得分:1)

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 pages
  • POST - 提交更改
  • DELETE - 使用它支持REST类型,但您也可以使用POST - 永远不要使用GET进行删除操作