2013-10-15 40 views
1

我最近偶然发现了多个会谈,声称你应该尽快对任何传入的HTTP请求做出响应,这似乎是合理的,但我不清楚在使用此策略时如何沟通失败。如何在给予HTTP响应的过程中处理失败?

让我们来看看发送响应代码为200并开始呈现HTML页面的情况。在我们构造主体时,数据从各种查询中流入,并突然发生错误。在这个时候改变我们的想法已经太迟了。

或者,也许一个更实际的例子:

我们提供了潜在提供数据的很多的API。为了保持速度,我们通过一些项目函数将数据从数据库连接中流出,然后转换为流式JSON编码器,该编码器可以正确写入套接字。噗噗,出了点问题。 DB连接断开,重新连接尝试超时。我们刚刚刷新了100K个JSON对象,但结果集实际上比这个大。

有什么好的方法可以在HTTP响应的一半中优雅地死去?

在HTML的情况下,人们总是可以打印一些人类可读的信息。并且在API中,一旦可以用{ "results": [ /* payload goes here */ ], "error": { /* error information */ } }作出响应,没关系,因为错误是在有效负载之后写入的。但理想情况下,我想使用HTTP协议中内置的东西。看起来很奇怪,说200,然后提供一个错误。有没有更好的办法?

+0

你能否提供你提到的会谈的链接,如果你有他们? –

回答

0

有没有什么好的方法可以在HTTP 响应中正常中途死去?

不,如果你刷新HTTP状态到客户端 - 有没有可能去改变它,所以唯一的办法是产生完全在服务器上输出,然后开始将其与相应的HTTP代码流媒体客户端

注 - 为大JSON数据检出gzip压缩

1

一旦发送状态码,您唯一的选择是关闭连接。

相关问题