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が走らないようになりました。