0
Help us understand the problem. What are the problem?

posted at

【Go】OpenAPI Generatorでコード生成時modelにCustom Struct Tagを出力する

概要

Goには、OpenAPIで定義したyamlをコード出力するツールがあります。概要についてはOpenAPI GeneratorでGoのAPIサーバー/クライアントコードを自動生成するの記事で、解説されています。
出力するコードにはmodelのstructも含まれるのですが、例えばGinでバリデーションを使ってみるで紹介されているような、Custom Struct Tag(ginだとbinding)を、出力したいという場合もあると思います。
今回は、OpenAPIでCustom Struct Tagを出力したい場合どうするかというのをメモ書きします。

対応方法

goswaggerのCustom extensionsのドキュメントにある通り、yamlにx-go-custom-tagで、Custom Struct Tagを設定すれば出力してくれます。

設定サンプル

以下がyamlファイルに設定する、リクエストのmodelのサンプルです。

SampleRequest:
  title: SampleRequest
  type: object
  properties:
    name:
      type: string
      x-go-custom-tag: binding:"required"
    email:
      type: string
      x-go-custom-tag: binding:"required,email"
  required:
    - name
    - email

以下のように、コードでbindingのStruct Tagが出力されます。

type SampleRequest struct {
	Name string `json:"name" binding:"required"`
	Email string `json:"email" binding:"required,email"`
}

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?