REST中的操作与CRUD

时间:2011-07-13 21:56:10

标签: rest restful-architecture

使用REST执行操作是否合适,除了简单的创建(POST),读取(GET),更新(PUT)和删除(DELETE)?我对整个RESTful神学都很陌生,所以请耐心等待,但我应该如何完成以下任务:

  • 我有一个需要与其他网络服务交谈的网络服务。 Web服务A需要在Web服务B上“保留”对象。此对象具有有效超时,但如果需要可以立即删除。它本质上是一个美化的权限系统,它要求Web服务在采取任何行动之前在Web服务B上保留一个空间。

我最初的想法是1.启用某种身份验证,2。在服务器端响应GET调用,保留空间并返回结果,以及3.通过DELETE调用立即提供对象的“保留” 。这仍然是RESTful吗?

3 个答案:

答案 0 :(得分:3)

是的,可以通过休息来执行操作。重要的是,这些行动应以您交换的陈述为指导。

如果您考虑网络的工作方式(通过浏览器),您可以随时执行此操作:您将获得一个HTML表单,您可以选择一些可以执行的操作。然后,您提交表单(通常通过POST)并执行操作。

通过编程客户端(这是浏览器中非AJAX请求不支持的东西)能够使用DELETE是件好事,但RESTful系统的整体方法应该与你找到了网站(即焦点应该在表示上:相当于你系统中的网页)。

GET不应有副作用,因此请勿使用GET进行预订,请改用POST之类的内容。

答案 1 :(得分:2)

不 - 不太可能是宁静的

从你的描述......

2。在服务器端对GET调用的响应中,保留空格并返回结果

GET应该是幂等的。仅仅因为这个原因,你的服务不太可能是宁静的,因为第一次GET之后的系统状态是不同的。

您确实需要考虑预订是资源,并且应该使用POST创建预留容器,该预留容器将在HTTP响应的Location标头中返回新资源的URI。 Get可以使用此UrI返回资源并使用PUT进行更新

Post应该用于扩展现有资源而Put用于替换资源的状态。在您的情况下,请考虑Post更新预留列表并返回新的URI资源(不仅仅是我)。 Put可用于更改与UR标识的资源相关联的状态

答案 2 :(得分:1)

你走在正确的轨道上,但你对物体的保留应该是PUT;你正在对物体进行预约,即改变基础物体。

PUT是正确的动词,因为你知道你正在修改什么资源,它应该是多个请求的幂等。