1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OpenAPI Specifications 3.0のComponents ObjectをZodスキーマに変換するライブラリを作った

Last updated at Posted at 2023-02-11

不安定版のため予告なく破壊的変更が行われる可能性があります

概要

表題、および Playground の通り。

  • OAS3.0.x専用(3.1以降とは互換性なし)
  • APIおよびCLI
  • CommonJS/ES Modules両対応
  • カスタマイズ可能
    • 変換を「型・キーワード毎に分割されたパーサー」で、出力を「 EJS テンプレート」で行い、いずれも自前のものに差し替えられる
    • ライブラリ側で対応しなくてもユーザーが柔軟に出力内容を調整することが可能
  • Paths Objectは扱わない

使用方法

READMEの通り。

参考

余談

OAS3.0→3.1は nullable の廃止といった破壊的変更を含む比較的大きなアップデートとなっており、OAS3.0のスキーマは JSON Schema Specification Wright Draft 00 を元にした独自仕様であるのに対し、OAS3.1のスキーマは JSON Schema Draft 2020-12 に準拠している。

3.1は2023年2月時点でSwagger UI/Editorが対応しておらず、自分の観測範囲ではほとんど使われていないことと、JSON Schema用のライブラリが転用できるため他の選択肢がありそうなことから、今回は考慮せず3.0専用とした。

なお、Swagger UI/Editorは2023Q1中にOAS3.1に対応するとのことなので、今後は移行が進むと思われる。

因みに本ライブラリは Next.js + React Hook Form との組み合わせで実戦投入済。(通信の方もOAS3.0ドキュメントを openapi2aspida に通して Aspida (@aspida/fetch, @aspida/swr) で利用している)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?