目前项目中用到golang来开发http服务器,实现一组对象存储的REST API,里面有使用PUT方法上传文件的需求,文件内容是写在body里的,我希望可以在收到的tcp包可以组装成http header时就提前进行处理,如果header不满足要求,比如长度,或者签名,就不再收取body,目前使用起来感觉是底层把包收完,组装好才回调给上层的handler,不知道这种情况该怎么处理?另外我测试下来,当body很大(测试用200M)时,如果不调用读取body的函数,会很快走进handler里,但是不会有正确的返回值,也不了解其中的原因?
实际是可以的...只读header,调用body的close方法,直接底层就关闭连接了,不会收剩余的数据,但是和你用的客户端也有关系,之前用postman就不行,它会认为请求都没成功发完,不会响应你的回复,用golang自己的http库实现客户端就没问题,https://github.com/golang/go/issues/3595这里有关于这个问题比较详细的描述,golang最初也是不支持的,后来开发者作为bug修复了。
#8
更多评论
楼主,你没看文档啊,http://docscn.studygolang.com/pkg/net/http/#Request, 类型Request 里就有解析好的Header
#2