OpenAPI Generator CLIにおけるメソッド名、引数、モデル名は何を材料に命名されているか

調査対象

  • docker image: openapitools/openapi-generator-cli(latest) (2024/4/29時点)
  • GENERATOR NAME: jaxrs-spec

インターフェースの各API名(メソッド名)

これのこと。

    @POST
    @Consumes({ "application/json" })
    @Produces({ "application/json" })
    List<Petfoo> methodpost(@Valid @NotNull Petfoo petfoo);

基本的にはoperationIdをもとに決定する。

決定できない場合、{paths直下のパス名} + {HTTPメソッド名}となる。 基本的には必須項目なのでoperationIdで決定できる。

ただし、予約語や頭文字が半角数字が設定されている(Javaの言語仕様としての命名規則に逆らう)場合はおかしな挙動になる

  1. operationIdをアッパーキャメルケースに変換したもの

  2. operationIdをもとにメソッド名を決定できないとき※1  予約語、頭文字が数字などJava命名規則に反する場合:callXXXX

  3. operationIdが空文字、半角スペース: {paths直下のパス名}+{HTTP methodName}

リクエストボディのmodelクラス

$refsを使用した場合

$ref: "#/components/schemas/XXX"のXXXがクラス名になる

$refsを使用しない場合

{operationId} + {HTTP StatusCode} + "Request"

オブジェクトがネストする場合は複数のクラスが作成される

例:

schema:
  type: object
  properties:
    user:
      type: object
      properties:
         address:
           type: string
         email:
           type: string

{operationId} + {HTTP StatusCode} + "Request" {operationId} + {HTTP StatusCode} + "Request" + User

レスポンスのmodelクラス

$refsを使用した場合

$ref: "#/components/schemas/XXX"のXXXがクラス名になる

$refsを使用しない場合

{operationId} + {HTTP StatusCode} + "Response"

オブジェクトがネストする場合はリクエストボディ同様に、複数のクラスが作成される