背景
swaggerに次のようなエラーレスポンスを追加したときに、クライアント側でどのようにハンドルして取り出すのか少し迷った。
...
responses:
"500":
schema: "#/definitions/Error"
headers:
X-Hogefuga:
type: string
...
クライアントでのハンドリング
swagger generate client
で生成されるコードにエラーレスポンスの型情報があるので、型アサーションしてあげると取れる。例えば500
だと[...]InternalServerError
がそれにあたる。
rep, err := api.Application.Get(params)
if reterr, ok := err.(*application.GetInternalServerError); ok {
return fmt.Erorf("internal server error: %v[%s]", err, reterr.XHogefuga)
}