The "net/http" golang package has a response type which I find confusing. It defines a member Body io.ReadCloser which requires an additional call to some form of an io writer to process. Why did the developers not choose to make the Body a []bytes or a string? These seem like much more obvious, natural choices to me.
Golang HTTP Request types
161 Views Asked by EnnFour At
1
There are 1 best solutions below
Related Questions in GO
- Go Fiber and HTMX - HX-Trigger header is changed to Hx-Trigger, which is not what HTMX is listening for
- Golang == Error: OCI runtime create failed: unable to start container process: exec: "./bin": stat ./bin: no such file or directory: unknown
- Handling both JSON and form values in POST request body with unknown values in Golang
- invalid transaction: Transaction failed to sanitize accounts offsets correctly
- Golang lambda upload image into s3 static website
- Is there a way to get a list of selected module versions, but only for modules within the pruned graph?
- Save Interface in DB golang
- ERROR: column "country" is of type text[] but expression is of type record (SQLSTATE 42804)
- Trying to update the version.go file with the release tag from GitHub actions but its failing
- How can I optimize this transposition table for connect 4 AI?
- const declaration - How to evaluate expressions at compile time?
- How add array of authors for unique user in database in Goland IDE?
- Why is the main goroutine not blocked after write in unbuffered channel?
- Insert & Retrieve from a channel in same main function throws "goroutine 1 [chan receive]: main.main() /path exit status 2" error
- Gob error when decoding array of structs: decoding into local type but received remote type
Related Questions in GO-HTTP
- Prepoluting index page before mux Handle call
- Compose middlewares in go-chi?
- How to remove SSRF vulnerability(CWE ID 918) from http.NewRequestWithContext() function in golang?
- unable to recreate CURL equivalent request in go-lang
- Each request takes longer than the last one
- Golang HTTP Request types
- Self-signed certificate for http webserver in Go not working
- Go HTTP server resets connection on multipart form with file and text
- Golang Uploading Big file to external API with multipart. How to avoid `io.Copy(io.Writer, io.Reader)` problem
- How to solve "Headers were already written. Wanted to override status code 200 with 400" In gin
- go - Are "http.Transport" and "http.Client" safe for concurrent modification in Go?
- How can I simultaneously listen on multiple sets of ports with different routes and control their open/close status in Go?
- http client: faster timeout when no network
- Get stacktrace when context.Context is canceled by http.TimeoutHandler
- Not showing my style in html with embed golang feature
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
An HTTP response body is a stream of bytes on the network connection. The io.Reader type is Go's representation of a stream of bytes. The Response.Body field is typed as io.ReadCloser which is an
io.Readerwith aClose()method.An advantage of
io.Readeroverstringand[]byteis that the application can stream through the response without loading the entire response in memory.Use io.ReadAll to read the io.Reader's data to a []byte.
Here's a convenient helper function converting the
(*http.Response, error)return values from thenet/httpfunctions to a[]byte:Use the function like this: