当前位置: 首页 > 面试题库 >

多个响应。Go中的WriteHeader调用

朱华皓
2023-03-14
问题内容

我的Go服务器正在处理我首先打电话给的请求response.WriteHeader(),以便设置响应的状态代码。之后,我开始将字节写入响应主体。如果我在复制字节时浏览器取消了请求,则会收到错误消息:

write tcp [::1]:52319: broken pipe

我的代码检测到此错误,然后调用http.Error()。这response.WriteHeader()再次调用。

这似乎是一个问题,但我不确定。可以避免吗?response.WriteHeader()写入响应正文时发生错误时,如何避免再次调用?

谢谢!


问题答案:

的呼叫.WriteHeader()开始通过网络将响应发送到客户端。回应一经进行,便无法退回。您唯一可以做的就是在本地记录错误(让服务器管理员知道),或者只是静默地失败。

“ Error()”函数用于发送完整的HTTP(错误)响应,因此您只能使用它代替发送自己的响应,而不能仅使用它来发送。



 类似资料:
  • 问题内容: 我有用于学习Go中名称空间的最基本的net / http程序: 当我运行该程序并在Chrome中连接时,我会在控制台中看到以下内容: 但是我不知道这怎么可能。我打印URL,启动一个新的goroutine,编写一次标头,然后给它一个静态主体。这似乎是两件事之一。幕后某事正在写另一个标头,或者为同一请求被两次调用。如何停止写多个标题? 编辑:这似乎与该行有关,因为如果删除并仅使其成为函数调

  • 问题内容: 在我的科目表中,我按学期和月份列出了所有学生的课程,每个月的分数 这就是我尝试过的 我从查询中获得的当前输出是每个查询的多个响应,因为我可以将其更改为,但不会获取其他数据 我的问题是我如何将它们合并为一个响应,并在预期的输出中返回以下数据(我在每个字段中添加了一些说明以对其进行解释) 预期产量 问题答案: 问题是,您想获取主题,而不是学生。因此,我反转了FROM和LEFT JOIN。因

  • 我用改型/rxJava调用我的API,得到了一个可观察的响应,就像一个BreedDog列表 ...你可以看到我的代码: 这是可行的,但是现在,对于列表中的每一项,我都需要调用API来获取URL图像并更新列表。。但我不知道怎么。。。我试着在Observable中更改我的单个响应,并使用了flatMap或flatMapIterate之类的运算符。。等等,但每次我都会在对象上出错。。没有一个例子。。。等

  • 我最近开始使用WebFlux,需要关于如何链接多个服务和聚合响应的建议。这4个服务及其响应POJO类似于以下示例: 以及4项服务的签名: 因此,需要为Flux中的每个响应1调用service2,为每个响应2调用service3。模型之间的关系是: 聚合的最终响应应类似于(JSON): 所以首先我需要调用Service1,然后为每个响应调用service2,然后为每个响应调用service3(由se

  • 问题内容: 我正在尝试为向Web服务发出请求的程序包编写测试。我可能由于缺乏对TLS的了解而遇到问题。 目前,我的测试看起来像这样: 我的程序包具有一个要查询的Web服务基址的程序包变量(我希望它是一个常量。)。这是一个https URL。我在上面创建的测试服务器是纯HTTP,没有TLS。 默认情况下,我的测试失败,并显示错误“ tls:第一条记录看起来不像TLS握手”。 为了使它起作用,我的测试

  • 我有一个通过Rest接收消息的入站网关。收到的所有消息都进入内部网关。下面是入站网关xml文件。 因此,入站网关消息正确地以Json形式到达,然后内部网关接受它们,并根据配置将消息传递到通道中。 直到这里,它的工作如预期的那样。消息先流向过滤器,然后流向路由器。在路由器中,如果一个json属性的类型是“饮料”服务,那么将调用饮料通道,并调用相关的出站网关来请求REST上的外部APIendpoint