🤔
Echo でデフォルト値を設定しつつ,クエリパラメータを Bind する
前提
・GET APIを実装しています
・APIのクエリパラメータに limit, offset が存在します
お気持ち
・limit, offset が入力されない場合はデフォルト値を設定したい
・limit, offset が入力された場合はその値を優先してほしい
・記述量は多くない方がイイな・・🥹
・使い回せれば嬉しい・・🙏
コード
const (
defaultOffset int = 0
defaultLimit int = 15
)
type Pagination struct {
Offset int `query:"offset"`
Limit int `query:"limit"`
}
func NewPagination() Pagination {
return Pagination{
Offset: defaultOffset,
Limit: defaultLimit,
}
}
type GetFooRequest struct {
FooID string `param:"foo-id"`
Pagination
}
func NewGetFooRequest(ctx echo.Context) (*GetFooRequest, error) {
request := GetFooRequest{
Pagination: NewPagination(),
}
if err := ctx.Bind(&request); err != nil {
return nil, err
}
...
...
埋め込んだ構造体に対して,echo の Bind がちゃんとできるのか?と思ったけどできた.
ちゃんと request.Limit
, request.Offset
でアクセスできます
HAPPY
もっと良い感じに書けるぜ!!っていうのがあれば,
教えてくださると幸いです☺️
Discussion