go-fastapi is a library to quickly build APIs. It is inspired by Python's popular FastAPI library.
Features:
- Auto-generated OpenAPI/Swagger schema without any markup
- Declare handlers using types, not just
Context - Based on gin framework
Installation: go get github.com/sashabaranov/go-fastapi
package main import ( "github.com/gin-gonic/gin" "github.com/sashabaranov/go-fastapi" ) type EchoInput struct { Phrase string `json:"phrase"` } type EchoOutput struct { OriginalInput EchoInput `json:"original_input"` } func EchoHandler(ctx *gin.Context, in EchoInput) (out EchoOutput, err error) { out.OriginalInput = in return } func main() { r := gin.Default() myRouter := fastapi.NewRouter() myRouter.AddCall("/echo", EchoHandler) r.POST("/api/*path", myRouter.GinHandler) // must have *path parameter r.Run() } // Try it: // $ curl -H "Content-Type: application/json" -X POST --data '{"phrase": "hello"}' localhost:8080/api/echo // {"response":{"original_input":{"phrase":"hello"}}}
To generate OpenAPI/Swagger schema:
myRouter := fastapi.NewRouter() myRouter.AddCall("/echo", EchoHandler) swagger := myRouter.EmitOpenAPIDefinition() swagger.Info.Title = "My awesome API" jsonBytes, _ := json.MarshalIndent(swagger, "", " ") fmt.Println(string(jsonBytes))