openapi-generatorで生成されたSwiftのコードが動かないので回避方法

2020年1月20日現在の話です。

OpenAPI(Swagger)で書かれた定義ファイルからswiftのクライアントコードを生成する場合に、openapi-generatorを使おうと考えると思います。しかし、下記のようなコマンドで生成されるコードはコンパイルはできるもののそのままでは動いてもレスポンスを返すことは決してないコードが生成されます。この回避方法を2つ紹介します。

openapi-generator generate -i openapi.yaml -o src/ -g swift5

--library を指定する

生成されるコードにlibraryを指定することによって、デフォルトに指定されている。URLSessionを使った壊れた実装のコードを回避します。libraryで指定できるのは現状だと alamofire だけのようです。

openapi-generator generate -i openapi.yaml -o src/ -g swift5 --library alamofire

swagger-codegenを使う

openapi-generatorを使うのを諦めてswagger-codegenでコードを生成することで回避する方法です。openapi-generatorで生成されるコードと大体同じものが生成されます。