[go] net/http: make ExampleGet show StatusCode checks for non-1XX,2XX responses

71 views
Skip to first unread message

Emmanuel Odeke (Gerrit)

unread,
Mar 7, 2021, 6:04:27 PM3/7/21
to Damien Neil, Dmitri Shuralyov, Ian Lance Taylor, goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Attention is currently required from: Damien Neil, Dmitri Shuralyov, Ian Lance Taylor.

Emmanuel Odeke would like Damien Neil, Dmitri Shuralyov and Ian Lance Taylor to review this change.

View Change

net/http: make ExampleGet show StatusCode checks for non-1XX,2XX responses

Updates ExampleGet to show how to handle bad responses with non-1XX,2XX
status codes. Given that the canonical examples are copied, we need
to have them properly check against failures. This is a bug I've seen
often in the wild, that's exacerbated when for example unmarshalling
JSON or even protobufs, and no errors are returned by the decoders,
so code fails silently after making a request for example to a gateway
that they were unauthorized to access.

Fixes #39778

Change-Id: I1cd688f2fab47581c8cf228235d3662b4c8e4315
---
M src/net/http/example_test.go
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/net/http/example_test.go b/src/net/http/example_test.go
index c677d52..2f411d1 100644
--- a/src/net/http/example_test.go
+++ b/src/net/http/example_test.go
@@ -45,12 +45,15 @@
if err != nil {
log.Fatal(err)
}
- robots, err := io.ReadAll(res.Body)
+ body, err := io.ReadAll(res.Body)
res.Body.Close()
+ if res.StatusCode > 299 {
+ log.Fatalf("Response failed with status code: %d and\nbody: %s\n", res.StatusCode, body)
+ }
if err != nil {
log.Fatal(err)
}
- fmt.Printf("%s", robots)
+ fmt.Printf("%s", body)
}

func ExampleFileServer() {

To view, visit change 299609. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: I1cd688f2fab47581c8cf228235d3662b4c8e4315
Gerrit-Change-Number: 299609
Gerrit-PatchSet: 1
Gerrit-Owner: Emmanuel Odeke <emma...@orijtech.com>
Gerrit-Reviewer: Damien Neil <dn...@google.com>
Gerrit-Reviewer: Dmitri Shuralyov <dmit...@golang.org>
Gerrit-Reviewer: Ian Lance Taylor <ia...@golang.org>
Gerrit-Attention: Damien Neil <dn...@google.com>
Gerrit-Attention: Dmitri Shuralyov <dmit...@golang.org>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-MessageType: newchange

Emmanuel Odeke (Gerrit)

unread,
Mar 7, 2021, 6:05:09 PM3/7/21
to goph...@pubsubhelper.golang.org, Dmitri Shuralyov, Damien Neil, Ian Lance Taylor, golang-co...@googlegroups.com

Attention is currently required from: Damien Neil, Dmitri Shuralyov, Ian Lance Taylor.

Patch set 1:Run-TryBot +1Trust +1

View Change

    To view, visit change 299609. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: go
    Gerrit-Branch: master
    Gerrit-Change-Id: I1cd688f2fab47581c8cf228235d3662b4c8e4315
    Gerrit-Change-Number: 299609
    Gerrit-PatchSet: 1
    Gerrit-Owner: Emmanuel Odeke <emma...@orijtech.com>
    Gerrit-Reviewer: Damien Neil <dn...@google.com>
    Gerrit-Reviewer: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Reviewer: Emmanuel Odeke <emma...@orijtech.com>
    Gerrit-Reviewer: Ian Lance Taylor <ia...@golang.org>
    Gerrit-Attention: Damien Neil <dn...@google.com>
    Gerrit-Attention: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
    Gerrit-Comment-Date: Sun, 07 Mar 2021 23:05:04 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    Gerrit-MessageType: comment

    Damien Neil (Gerrit)

    unread,
    Mar 19, 2021, 12:12:45 PM3/19/21
    to Emmanuel Odeke, goph...@pubsubhelper.golang.org, Go Bot, Dmitri Shuralyov, Ian Lance Taylor, golang-co...@googlegroups.com

    Attention is currently required from: Dmitri Shuralyov, Ian Lance Taylor, Emmanuel Odeke.

    Patch set 1:Code-Review +2

    View Change

      To view, visit change 299609. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: go
      Gerrit-Branch: master
      Gerrit-Change-Id: I1cd688f2fab47581c8cf228235d3662b4c8e4315
      Gerrit-Change-Number: 299609
      Gerrit-PatchSet: 1
      Gerrit-Owner: Emmanuel Odeke <emma...@orijtech.com>
      Gerrit-Reviewer: Damien Neil <dn...@google.com>
      Gerrit-Reviewer: Dmitri Shuralyov <dmit...@golang.org>
      Gerrit-Reviewer: Emmanuel Odeke <emma...@orijtech.com>
      Gerrit-Reviewer: Go Bot <go...@golang.org>
      Gerrit-Reviewer: Ian Lance Taylor <ia...@golang.org>
      Gerrit-Attention: Dmitri Shuralyov <dmit...@golang.org>
      Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
      Gerrit-Attention: Emmanuel Odeke <emma...@orijtech.com>
      Gerrit-Comment-Date: Fri, 19 Mar 2021 16:12:39 +0000

      Damien Neil (Gerrit)

      unread,
      Mar 19, 2021, 12:12:51 PM3/19/21
      to Emmanuel Odeke, goph...@pubsubhelper.golang.org, golang-...@googlegroups.com, Go Bot, Dmitri Shuralyov, Ian Lance Taylor, golang-co...@googlegroups.com

      Damien Neil submitted this change.

      View Change

      Approvals: Damien Neil: Looks good to me, approved Emmanuel Odeke: Trusted; Run TryBots Go Bot: TryBots succeeded
      net/http: make ExampleGet show StatusCode checks for non-1XX,2XX responses

      Updates ExampleGet to show how to handle bad responses with non-1XX,2XX
      status codes. Given that the canonical examples are copied, we need
      to have them properly check against failures. This is a bug I've seen
      often in the wild, that's exacerbated when for example unmarshalling
      JSON or even protobufs, and no errors are returned by the decoders,
      so code fails silently after making a request for example to a gateway
      that they were unauthorized to access.

      Fixes #39778

      Change-Id: I1cd688f2fab47581c8cf228235d3662b4c8e4315
      Reviewed-on: https://go-review.googlesource.com/c/go/+/299609
      Trust: Emmanuel Odeke <emma...@orijtech.com>
      Run-TryBot: Emmanuel Odeke <emma...@orijtech.com>
      TryBot-Result: Go Bot <go...@golang.org>
      Reviewed-by: Damien Neil <dn...@google.com>

      ---
      M src/net/http/example_test.go
      1 file changed, 5 insertions(+), 2 deletions(-)

      diff --git a/src/net/http/example_test.go b/src/net/http/example_test.go
      index c677d52..2f411d1 100644
      --- a/src/net/http/example_test.go
      +++ b/src/net/http/example_test.go
      @@ -45,12 +45,15 @@
      if err != nil {
      log.Fatal(err)
      }
      - robots, err := io.ReadAll(res.Body)
      + body, err := io.ReadAll(res.Body)
      res.Body.Close()
      + if res.StatusCode > 299 {
      + log.Fatalf("Response failed with status code: %d and\nbody: %s\n", res.StatusCode, body)
      + }
      if err != nil {
      log.Fatal(err)
      }
      - fmt.Printf("%s", robots)
      + fmt.Printf("%s", body)
      }

      func ExampleFileServer() {

      To view, visit change 299609. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: go
      Gerrit-Branch: master
      Gerrit-Change-Id: I1cd688f2fab47581c8cf228235d3662b4c8e4315
      Gerrit-Change-Number: 299609
      Gerrit-PatchSet: 2
      Gerrit-Owner: Emmanuel Odeke <emma...@orijtech.com>
      Gerrit-Reviewer: Damien Neil <dn...@google.com>
      Gerrit-Reviewer: Dmitri Shuralyov <dmit...@golang.org>
      Gerrit-Reviewer: Emmanuel Odeke <emma...@orijtech.com>
      Gerrit-Reviewer: Go Bot <go...@golang.org>
      Gerrit-Reviewer: Ian Lance Taylor <ia...@golang.org>
      Gerrit-MessageType: merged
      Reply all
      Reply to author
      Forward
      0 new messages