以RESTful方式触发服务器端事件

14

我有这样一种情况,我需要我的API调用触发服务端事件,客户端不需要提供任何信息(除了身份验证),服务器也不需要返回任何内容。由于这与标准的CRUD /资源交互不太适合,这是否意味着我做错了什么,或者有没有RESTful设计模式来处理这些条件?

2个回答

13

你的客户端只需要:

POST /trigger

服务器会响应一个 202 Accepted,这样你的请求仍然可以包含适当的身份验证头,并且如果您需要客户端提供实体,或者需要返回包含有关如何查询事件状态的信息的响应,则可以在将来扩展API。

你在这里尝试做的事情与"非RESTful"无关;REST原则不一定要与资源上的CRUD操作相关。


202规范指出:

此响应返回的实体应包括请求当前状态的指示以及指向状态监视器或用户可以期望请求被满足的时间的某些估计。

鉴于定义中的"SHOULD",您没有义务在响应中发送任何内容。


0

REST 定义了客户端和服务器之间通信的性质。在这种情况下,我认为问题在于没有信息可传输。

客户端有必要发起这个调用吗?我认为你的服务端事件应该完全自包含于服务器内部。或许可以定期使用 cron 调用来启动它?


2
没有信息传输并不意味着客户端不能发起呼叫。可以考虑在服务器端为虚拟机资源设置“重启”触发器等类似操作。 - RayLuo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接