Ral*_*lph 51 rest web-applications
如何将"命令"发送到RESTful服务器?
使用案例:我的服务器缓存某些信息,以便每次请求信息时都不必读取数据库.我需要一种方法从我的客户端应用程序发送命令,告诉服务器刷新缓存.你会在像".../flush_cache"这样的URL上使用POST或PUT吗?
"命令"实际上不是需要"Representational State Transfer"的数据,除非被传输的状态是命令的结果 - "开关关闭","缓存被刷新"等.作为一般规则,如何做REST将命令发送到服务器?
red*_*ben 70
我在过去的项目中遇到过很多这样的情况.由于REST很好......关于资源,因此并不总是清楚如何处理真正具有RPC的东西.
解决这个问题的一个简单方法是将其视为休息的官僚部分,请求可以是资源本身:
1."你想在我的服务器上触发命令?首先填写此表格I90292并发送给我们":
POST /bureaucracy/command-request
Content-Type: application/x-www-form-urlencoded
Content-Length: ...
Run Code Online (Sandbox Code Playgroud)
"好的,我们会看到我们能做什么.你的案件编号是999"
201创建(或根据Kugel的评论接受202)位置/官僚/命令请求/ 999
然后客户定期检查
GET /官僚机构/命令请求/ 999
希望他得到如下的回应
200 OK
<command-request>
<number>999</number>
...
<result>Success</result>
</command-request>
Run Code Online (Sandbox Code Playgroud)
当然,如果官僚服务有很好的客户关怀,它会让客户在完成后给他打电话,如果他想要:
"你想在我们的服务器上触发一个命令?请填写此表并发送给我们.请注意你可以加入您的联系信息,以便我们可以在完成后给您打电话"
POST /bureaucracy/command-request?callback=client.com/bureaucracy/inbox
Run Code Online (Sandbox Code Playgroud)
或者作为自定义http标头 X-Callback: http://client.com/bureaucracy/inbox
Bru*_*uno 15
我建议这个:
http://server.example/results/00001),可能具有204(无内容)状态和Location头或重定向(取决于哪个客户端可以了解).由您决定结果资源的生命周期.如果您不需要长时间存储结果,它可能是短暂的.例如,URI可以从UUID构造.
在你的情况下,为什么不制作cache资源?
DELETE /cache
Run Code Online (Sandbox Code Playgroud)
当你想要冲洗它.
POST /cache
Run Code Online (Sandbox Code Playgroud)
当你想要创建一个新的.
或者将前两个组合成以下内容:
DELETE /cache?autorecreate=true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24000 次 |
| 最近记录: |