https://github.com/OpenAPITools/openapi-generator
https://github.com/deepmap/oapi-codegen
oapi-codegen で生成したstructにURLパラメータをバインドできない
https://github.com/deepmap/oapi-codegen/issues/500
oapi-codegen -generate "types" -package "openapi" openapi.yaml
で以下のようなコードが生成される
type FindPetsParams struct {
// tags to filter by
Tags *[]string `json:"tags,omitempty"`
// maximum number of results to return
Limit *int32 `json:"limit,omitempty"`
}
これをechoのメソッドでBindするとこうなる
func ParseFilter(c *echo.Context) error {
f := tasksapi.FindPetsParams{}
if err := c.Bind(&f); err != nil {
return f, err
}
fmt.Printf("param: %v\n", f) // => fieldに値がセットされない
return f, nil
}
ParamのstructタグにqueryがついていればBindされる
type FindPetsParams struct {
// tags to filter by
Tags *[]string `query:"tags,omitempty"`
// maximum number of results to return
Limit *int32 `query:"limit,omitempty"`
}
generate に server を指定すると、ここを解決したコードを生成してくれるのだが、 ServerInterfaceが全部のAPIをひとつのinterfaceで持っちゃっているので、なんか微妙だなって思っちゃう