如何向RESTful服务器发送“命令”?
用例:我的服务器缓存某些信息,这样它就不必在每次请求该信息时都读取数据库。我需要一种方法从我的客户端应用程序发送一个命令,告诉服务器刷新缓存。你会在像".../flush_cache“这样的网址上使用POST或PUT吗?
“命令”并不是真正需要“具象状态传输”的数据,除非传输的状态是命令的结果-- "switch is off“、"cache is flushed”等。作为一般规则,REST如何向服务器发送命令?
发布于 2011-04-12 02:09:19
在过去的项目中,我经常遇到这样的情况。因为REST是well...about资源,所以并不总是清楚如何处理本质上是RPC的东西。
解决这一问题的一个简单方法是将其视为rest的官僚部分,请求本身可以是一种资源:
1.“您想在我的服务器上触发命令吗?请先填写此表单I90292并将其发送给我们”:
POST /bureaucracy/command-request
Content-Type: application/x-www-form-urlencoded
Content-Length: ...201创建(或根据库格尔的评论接受202 ) Location /bureaucracy/command-request/999
GET /官僚机构/命令请求/999
希望他能得到下面这样的响应
200 OK
<command-request>
<number>999</number>
...
<result>Success</result>
</command-request>当然,如果官僚服务有很好的客户关怀,它会让客户在完成工作后打电话给他,如果他想的话:
“您想在我们的服务器上触发命令吗?请填写此表单并将其发送给我们。请注意,您可以加入您的联系信息,这样我们就可以在完成时通知您”
POST /bureaucracy/command-request?callback=client.com/bureaucracy/inbox 或作为自定义http标头X-Callback: http://client.com/bureaucracy/inbox
发布于 2010-08-12 21:56:20
我建议这样做:
http://server.example/results/00001),可能带有204 (无内容)状态和位置标头或重定向(取决于哪个客户端可以使用understand).结果资源的生命周期由您决定。如果你不需要长时间存储结果,它可能是短暂的。例如,URI可以从UUID构造。
发布于 2014-07-27 09:54:22
在您的情况下,为什么不将cache作为资源呢?
DELETE /cache当你想冲水的时候。
POST /cache当你想要创建一个新的。
或者将前两个合并为以下内容:
DELETE /cache?autorecreate=truehttps://stackoverflow.com/questions/3468177
复制相似问题