GitHub - apex/gateway: Drop-in replacement for Go net/http when running in AWS L...
source link: https://github.com/apex/gateway
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
apex/gateway
Package gateway provides a drop-in replacement for net/http's ListenAndServe
for use in AWS Lambda & API Gateway, simply swap it out for gateway.ListenAndServe
. Extracted from Up which provides additional middleware features and operational functionality.
There are two versions of this library, version 1.x supports AWS API Gateway 1.0 events used by the original REST APIs, and 2.x which supports 2.0 events used by the HTTP APIs. For more information on the options read Choosing between HTTP APIs and REST APIs on the AWS documentation website.
Installation
To install version 1.x for REST APIs.
go get github.com/apex/gateway
To install version 2.x for HTTP APIs.
go get github.com/apex/gateway/v2
Example
package main
import (
"fmt"
"log"
"net/http"
"os"
"github.com/apex/gateway"
)
func main() {
http.HandleFunc("/", hello)
log.Fatal(gateway.ListenAndServe(":3000", nil))
}
func hello(w http.ResponseWriter, r *http.Request) {
// example retrieving values from the api gateway proxy request context.
requestContext, ok := gateway.RequestContext(r.Context())
if !ok || requestContext.Authorizer["sub"] == nil {
fmt.Fprint(w, "Hello World from Go")
return
}
userID := requestContext.Authorizer["sub"].(string)
fmt.Fprintf(w, "Hello %s from Go", userID)
}
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK