> On 29 Apr 2021, at 11:27 pm, K. Alex Mills <k.alex.mi...@gmail.com> wrote:
> 
> Partial responses inline, HTH.
> 
> On Thu, Apr 29, 2021, 6:09 AM Amit Saha <amitsaha...@gmail.com 
> <mailto:amitsaha...@gmail.com>> wrote:
> Hi all, when an incoming request comes in, does the ListenAndServe()
> function read the first line (as explained in
> https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages 
> <https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages>) to figure
> out whether there is a handler registered or not for the path and then
> simply hands it over to the handler (if there is one)?
> 
> In the http package, that role is played by the ServeMux 
> <https://golang.org/pkg/net/http/#ServeMux>.
> 
> 
> It seems like it is also reading the headers, and then populating the
> http.Request object with them. But, I am curious as to why does it do
> so? Is there any specific header that the server must look for?
> 
> HTTP headers arrive on the wire before the body, so they have to be consumed 
> prior to the body. The HTTP package parses them and makes them available so 
> the handler and middleware can make use of them as needed to do 
> header-related things like authentication.
> 
> 
> As far as the Body is concerned, that is left to the handler to
> decide, is that correct?
> 
> I guess you mean that the handler gets to decide for itself whether to read 
> the body or not. AFAIK, that's correct.
> 
> One benefit of parsing the headers into a map is that it makes HTTP 
> middleware more composeable and easier to write. Parsing the headers first 
> means different middlewares can examine the same headers. The same is not 
> true of the body, which can only be consumed once unless you add special 
> handling to store it in memory for later.
> 

Thank you for the replies, they do help clarify my understanding.


> 
> Thanks,
> Amit.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com 
> <mailto:golang-nuts%2bunsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CANODV3kSLPyV0snkPOr8Q_j%2BR%3DGOfVie2FNxEA1B-8%2BFvQxMEA%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/golang-nuts/CANODV3kSLPyV0snkPOr8Q_j%2BR%3DGOfVie2FNxEA1B-8%2BFvQxMEA%40mail.gmail.com>.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/BDE1F30C-901D-4CE5-AB75-82A10499CDD3%40gmail.com.

Reply via email to