OpenAPIのadditional_propertyオプションってなに?
背景
友人とアプリ開発をしています。 わたしがRailsでバックエンドを、友人がDart/Flutterでアプリを担当しています。
Railsにapipie
のgemを導入し、Swagger定義を出力できるようにしました。
cf. Docker+Rails6+apipieを使ってAPI定義をSwagger UIに表示 - Qiita
出力したJSONを使って、アプリ側でコードを自動生成するようなのですが、どうもうまくいかない様子...。
調査してもらったところ「additional_propertyがfalseなのが問題」とのこと。
しかしながらadditional_property
がなんなのか、よくわかってなかったので調査しました。
※1 以下に関してはまだわかってないです。1つずつ理解を進めます。
※2 全体像がわかった時に「Flutterで利用できるswagger.jsonを出力するためのapipieの設定とハマリポイント」ついてもまとめたいと思います
additional_propertyとは?
「properties
で指定したプロパティ以外も受け付けるかどうか」を指定するオプションのようです。
- trueの場合は、propertiesに記載のないプロパティも受け付ける
- falseの場合は、propertiesに記載のないプロパティを受け付けない
こちらに実例付きで詳しく説明されていました。
cf. json-schema: オブジェクトの設定 - nju33
apipieでadditional_propertyを指定する
apipieでは、additional_property
はfalseが初期値です。
trueにするために、以下の1行を追加すればOKです。
### apipie.rb config.swagger_allow_additional_properties_in_response = true
cf. Apipie/apipie-rails: Ruby on Rails API documentation tool