go语言和url Go语言和java( 四 )


以下情况返回非空err,示得到正确的请求:
最后配置req.ctx req.RemoteAddr req.TLS body.doEarlyClose = true 。
构建Response:
其中closeNotifyCh必须在构建时初始化,没有content所以先置contentLength为-1 。
配置w.cw并被w.w包裹 。w.cw缓冲默认大小2M 。
获取Request可能出现如下错误:
先上响应数据结构:
response字段可以分类为:大对象、缓冲、KV对或bool型的状态参数 。
大对象有:
状态字段:
chunkWriter数据结构:
chunkWriter包裹了Response,功能之一是完成Header设置,包括Content-TypeContent-Length chunk-header 。bufio.Writer是chunkWriter是缓冲包裹 。
handler将响应写入到response.w 。
调用w.w.Flush()将w写入到cw,注意到Flush()操作,如果未刷空缓存并报错,触发拷贝操作 。报错不会退回已写出的数据 。
进而调用cw.Write() , 根据cw.chunking参数 。
putBufioWriter(w.w)清空resp.w缓冲,如果池化放回sync.pool 。
根据chunkWriter的定义,w.cw.close()负责cw的结束工作:写入换行符和resp.trailers数据 。
最后刷新TCP缓冲w.conn.bufw.Flush(),完成响应包发送 。并正确关闭request 。
【go语言和url Go语言和java】go语言和url的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于Go语言和java、go语言和url的信息别忘了在本站进行查找喔 。

推荐阅读