我认为从高级别的角度来看,我理解异步POST方法的基本原理。最大的好处是调用者可以快速响应,即使POST中的数据处理可能尚未完成。
但我真的不明白这是如何适用于GET方法的。响应需要包含数据,那么在处理完成之前如何进行响应?为什么API具有使用异步方法的GET请求处理程序?
我认为这个一般类型的问题并不重要,但我使用Web API编写C#。
答案 0 :(得分:3)
在网络上没有异步HTTP调用。它只是通过TCP传输的数据。服务器无法判断客户端是内部同步还是异步。
来电者得到快速回复
实际上,服务器可以提前发送响应行和标题,并且数据延迟发送。但这与异步IO或异步.NET服务器实现无关。这只是一些早到,有些迟到的字节。
所以这里GET和POST没有区别。
为什么......利用异步方法?
它们可以为客户端和/或服务器带来可伸缩性优势。 HTTP级别没有区别。
答案 1 :(得分:1)
因此,应用程序可以执行其他不需要数据的操作。
如果你将GET实现为同步(并且假设你在一个糟糕的网络上,需要20秒才能获得它),你不能
编辑(参见注释):服务器想要异步响应主要是出于同样的原因(放弃线程)。实际上获取数据可能是异步的并且需要一些时间 - 您不希望在整个时间内阻塞该线程。
答案 2 :(得分:0)
如果您正在构建RESTful API,其中GET应该返回资源(或集合)并且是幂等的(不进行任何更改),这没有任何意义。
但如果您不遵循这些原则,GET请求可以异步执行某些工作。例如,GET /messages/3
可以将消息返回给客户端,但然后异步执行其他工作,如:
这些都不会被视为RESTful API,但仍会不时使用。