summaryrefslogtreecommitdiff
path: root/libgo/go/net/http/example_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/net/http/example_test.go')
-rw-r--r--libgo/go/net/http/example_test.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/libgo/go/net/http/example_test.go b/libgo/go/net/http/example_test.go
index 88b97d9e3d7..1774795d379 100644
--- a/libgo/go/net/http/example_test.go
+++ b/libgo/go/net/http/example_test.go
@@ -6,6 +6,7 @@ package http_test
import (
"fmt"
+ "io"
"io/ioutil"
"log"
"net/http"
@@ -86,3 +87,25 @@ func ExampleServeMux_Handle() {
fmt.Fprintf(w, "Welcome to the home page!")
})
}
+
+// HTTP Trailers are a set of key/value pairs like headers that come
+// after the HTTP response, instead of before.
+func ExampleResponseWriter_trailers() {
+ mux := http.NewServeMux()
+ mux.HandleFunc("/sendstrailers", func(w http.ResponseWriter, req *http.Request) {
+ // Before any call to WriteHeader or Write, declare
+ // the trailers you will set during the HTTP
+ // response. These three headers are actually sent in
+ // the trailer.
+ w.Header().Set("Trailer", "AtEnd1, AtEnd2")
+ w.Header().Add("Trailer", "AtEnd3")
+
+ w.Header().Set("Content-Type", "text/plain; charset=utf-8") // normal header
+ w.WriteHeader(http.StatusOK)
+
+ w.Header().Set("AtEnd1", "value 1")
+ io.WriteString(w, "This HTTP response has both headers before this text and trailers at the end.\n")
+ w.Header().Set("AtEnd2", "value 2")
+ w.Header().Set("AtEnd3", "value 3") // These will appear as trailers.
+ })
+}