概要
現場でOpenAPIスキーマをいじっていて、ファイル内に出てくる ~1
って何の記法だ?ってなってしまったので、
ChatGPTに尋ねてみたところ、それっぽい回答が得られたのでそれをメモします。
※以下は、例です。
/orders/settle: $ref: ./resources/orders.yml#/paths/~1orders~1settle
以下、ChatGPT回答
「~1」という表記は、URLエンコードにおいて、スラッシュ「/」を表すために使用される特殊な表記方法の一つです。
具体的には、「~」がエスケープ文字で、「1」がスラッシュを表すための置換文字として使われます。つまり、「~1」は「/」と同じ意味を持ちます。
OpenAPIのYamlファイルにおいては、APIエンドポイントのパスにスラッシュが含まれる場合、これを「~1」という表記に置き換える必要があります。例えば、以下のようなパスがあった場合、
/users/{user_id}/items/{item_id}
これをURLエンコードすると、以下のようになります。
/users/%7Buser_id%7D/items/%7Bitem_id%7D
このURLエンコードされたパスをOpenAPIのYamlファイルに記述する際には、「~1」を使ってスラッシュを表現します。
/users/{user_id}/items/{item_id}: get: ...
は以下のように表現されます。
/users/{user_id}~1items/{item_id}: get: ...