go语言从0实现net/http标准库(终):静态路由
本文给我们的框架提供静态路由功能,因为不涉及http协议的解析,以及各种Reader、Writer流的设置,只涉及最基础的逻辑思维以及抽象能力,因此实现极为简单。
华中科技大学本硕, 热爱编程, 擅长C++、Go开发
本文给我们的框架提供静态路由功能,因为不涉及http协议的解析,以及各种Reader、Writer流的设置,只涉及最基础的逻辑思维以及抽象能力,因此实现极为简单。
以框架目前的完成度来说,handler中还需要我们手动的构建http响应报文,不仅麻烦而且容易出错。因此我们今天就要完成对response的封装,提供更易操作的api以及完成对响应报文的自动构建。本文难度较高,是该系列的最后一个难点。
上文完成了multipart/form-data表单的解析,目前提供的API使用起来依旧有点麻烦,我们在此基础上进行稍加封装,更方便用户使用。本文难度较低。
前文对Body进行了设置,不论客户端是使用Content-Type还是chunk编码的方式,服务端都能够正确的解析。本文将在Body功能的基础上,着重完成form表单中的multipart表单的解析。个人认为是整个框架最难实现部分,不过与chunkReader实现的思路类似,可以借鉴实现。
前文进行了Request首部字段的解析,已经完整的支持了GET请求。对于POST请求来说,其传送的表单数据在HTTP请求的报文主体body部分,服务端需要进一步IO操作才能读出,为了提高性能我们将POST表单的解析权交给用户,为此我们给Request结构体封装一个Body字段,作为IO的接口。本文需要多加理解,难度较高。
本文将正式开始HTTP协议的解析,主要完成Request结构体的属性组成,HTTP请求报文首部字段以及请求行的解析,难度适中。
本文将为httpd框架搭建具体的骨干,划分不同的模块,为后续的开发捋清脉络。本文暂不涉及http协议的解析过程,难度较低。
go语言提供了net/http标准库,帮助开发者轻松的开发web应用,不论是了解http协议还是深入理解go语言的设计理念,阅读http标准库都极为重要。但如果新手一头扎进源码的阅读,总因为抓不住主线脉络或者不懂某个步骤的设计原因导致雾水重重,本系列将从tcp基础上通过从零实现的方式带你剖析net/http标准库的实现过程。