布団の中にいたい

Elasticsearchいじったり、Androidアプリ書いたり。最近は数学の勉強が楽しくなってきました。

go-playground/validatorでomitemptyを使う

go-playground/validatorを使って、空の値を許容するクエリパラメータのvalidationをしようとして微妙にハマったのでメモ。

go-playground/validatorのリポジトリは以下。

https://github.com/go-playground/validator

go-playground/validatorを使う場合、まずクエリパラメータに対応する構造体を定義して、validationをかけたい要素に対して、validateタグを付加する形になります。

validatorのexampleにもありますが、だいたいこんな感じ。

type QueryParam struct {
    A string `json:"a" validate:"required"`
    B string `json:"b" validate:"max=10"`
}

このときに、requiredをvalidateタグに使わなくても基本的にrequiredになるので、例えばクエリパラメータとして投げられたときはvalidationしたいけど、空のときはそのまま通したいという場合があって微妙に困りました。そんななかdocumentを漁った結果よさそうなものを発見。

https://godoc.org/gopkg.in/go-playground/validator.v9#hdr-Omit_Empty

ドキュメントにそのまま書かれている通り、validateタグにomitemptyを付加すれば、値がセットされていないときはvalidationが走らないようになりました。