42 lines
854 B
Go
42 lines
854 B
Go
package function
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
// Handle an HTTP Request.
|
|
func Handle(ctx context.Context, res http.ResponseWriter, req *http.Request) {
|
|
/*
|
|
* YOUR CODE HERE
|
|
*
|
|
* Try running `go test`. Add more test as you code in `handle_test.go`.
|
|
*/
|
|
|
|
fmt.Println("Received request")
|
|
fmt.Println(prettyPrint(req)) // echo to local output
|
|
fmt.Fprintf(res, prettyPrint(req)) // echo to caller
|
|
}
|
|
|
|
func prettyPrint(req *http.Request) string {
|
|
b := &strings.Builder{}
|
|
fmt.Fprintf(b, "%v %v %v %v\n", req.Method, req.URL, req.Proto, req.Host)
|
|
for k, vv := range req.Header {
|
|
for _, v := range vv {
|
|
fmt.Fprintf(b, " %v: %v\n", k, v)
|
|
}
|
|
}
|
|
|
|
if req.Method == "POST" {
|
|
req.ParseForm()
|
|
fmt.Fprintln(b, "Body:")
|
|
for k, v := range req.Form {
|
|
fmt.Fprintf(b, " %v: %v\n", k, v)
|
|
}
|
|
}
|
|
|
|
return b.String()
|
|
}
|