Перейти до вмісту

Типи OpenAPI у TypeScript

Перетворіть документ OpenAPI або Swagger у інтерфейси та типи TypeScript.

Введення
Вихід

Типи OpenAPI у TypeScript

Вставте документ OpenAPI 3 або Swagger 2 — JSON або YAML — і цей інструмент генерує відповідні інтерфейси TypeScript для кожної схеми в components/schemas, плюс один тип на кінцеву точку для її шляху та параметрів запиту, тіла запиту та відповідей. Це звільняє від необхідності вручну писати типи API щоразу, коли змінюється специфікація, і тримає клієнта синхронізованим з тим, що насправді повертає сервер.

Опції керують формою вихідних даних. Виберіть оголошення interface або type, і вирішіть, як представляються поля з null: як необов'язкова властивість (x?: string) або як об'єднання з null (x: string | null). Посилання $ref можуть або залишатися як іменовані типи, що вказують на відповідний інтерфейс, або бути розгорнутими вбудовано везде, де вони використовуються. Вимкніть "Генерувати типи шляху, параметрів та відповідей", щоб отримати лише схеми компонентів, або включіть об'єднання кодів стану, щоб побачити кожен код відповіді, який може повернути кінцева точка, як один тип. Описи зі специфікації стають JSDoc-коментарями над кожним полем, а префікс імені захищає згенеровані типи від конфлікту з вашими власними при вставці їх у велику кодову базу.

Парсер читає стандартні конструкції OpenAPI — схеми об'єктів та масивів, перелічення, oneOf/anyOf/allOf, nullable, additionalProperties — і слідує локальним указівникам $ref у межах одного документа. Кінцеві точки, позначені як застарілі, можна повністю пропустити, а документ, який не виглядає як OpenAPI (немає розділу components/schemas або paths), видає зрозумілу помилку замість порожнього виходу.

Усе виконується локально у вашому браузері — ваша специфікація API, яка може описувати неопубліковану продукцію або внутрішню систему, ніколи не завантажується ніде. Скопіюйте згенеровані типи, завантажте їх як файл .txt для вставки в файл .ts або відправте вихід безпосередньо назад на вхід, щоб продовжити вдосконалення.

FAQ

Чи підтримує він документи OpenAPI 3 та Swagger 2?
Так. Обидва використовують одну і ту ж структуру paths, а визначення Swagger 2 читаються так само, як components/schemas у OpenAPI 3.
Що відбувається з посиланнями $ref, які вказують поза документ?
Розв'язуються лише локальні посилання (що починаються з #/). Посилання $ref на зовнішній файл зберігається як іменований тип, але не може бути розгорнуто, оскільки там нічого читати.
Чи можу я генерувати типи лише для кінцевих точок, без кожної схеми компонента?
Схеми компонентів завжди генеруються при наявності, оскільки типи запитів та відповідей зазвичай посилаються на них. Вимкніть типи шляху, щоб пропустити все, походить з paths, і зберегти лише схеми.
Чому циклічне посилання схеми залишається як іменований тип навіть якщо "розгорнути" включено?
Схема, яка посилається сама на себе, прямо або через іншу схему, не може бути вбудована без нескінченного циклу, тому те одне посилання повертається до іменованого типу, а решта все ще розгортаються.
Де моя специфікація API завантажується?
Ніде. Синтаксичний аналіз та генерування типів виконуються повністю у вашому браузері — ваш документ ніколи не залишає ваше пристрій.