oas_parser を使って OpenAPI の YAML をパースする
備忘録。
OpenAPI の定義をパースしてあれこれしたい機会があったので、パーサを試してみた。パーサ実装は色々あったが、とりあえず慣れ親しんでいる Ruby 向けの oas_parser を使ってみた。
なぜパーサを使うのか?
OpenAPI の定義は原則 JSON もしくは YAML なのに、何故わざわざパーサライブラリを使うかというと、主に $ref
の解決を自分でやりたくないから。
使ってみた
まずはパースする。
require 'oas_parser' definition = OasParser::Definition.resolve('/path/to/yaml')
パスと HTTP メソッドでエンドポイントを検索する。
endpoint = definition.path_by_path('/foo/{x}').endpoint_by_method('post')
パラメータやリクエストボディ、レスポンスを確認可能。
endpoint.parameter_by_name('to') # パスパラメータの情報を取り出す endpoint.request_body.properties_for_format('application/json') # Content-Type を指定してリクエストボディの情報を取り出す endpoint.response_by_code('200') # レスポンスコードを指定して取り出す
ちなみに各種検索で失敗した場合は例外が発生する。