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') # レスポンスコードを指定して取り出す

ちなみに各種検索で失敗した場合は例外が発生する。