Drop-in replacement for Go net/http when running in AWS Lambda & API Gateway
Go
651
35 commits
updated Jul 14, 2022
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.
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
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)
}
Overall
Maintained
Code review
Go module
Latest release
Releases this year
5,090 followers · starred Jan 2018
59 followers · starred Jan 2018
681 followers · starred Nov 2019
171 followers · starred Feb 2021
Drop-in replacement for Go net/http when running in AWS Lambda & API Gateway
Go
651
35 commits
updated Jul 14, 2022
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.
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
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)
}
Overall
Maintained
Code review
Go module
Latest release
Releases this year
5,090 followers · starred Jan 2018
59 followers · starred Jan 2018
681 followers · starred Nov 2019
171 followers · starred Feb 2021