как правильно создать веб-службу swagger в TypeScript

Я являюсь частью проекта, написанного на TypeScipt, и я пытаюсь добавить веб-сервер TypeScript, который будет совместим со Swagger.
Какова самая основная стратегия для его реализации, учитывая простоту обслуживания.

  • Для Typescript я заметил, что существует библиотека Typson для создания модели JSON из интерфейса TypeScript.

  • Для Swagger я попытался использовать библиотеку swagger-node-restify, поскольку она поддерживает добавление моделей JSON в swagger.

Однако я сталкиваюсь с некоторыми проблемами:

  1. Typson не поддерживает синтаксис Import typeScript — (import {Server} from "restify")
  2. Я попытался реализовать пример «swagger-node-restify» (пример для домашних животных), однако в ОТВЕТЕ на запрос GET localhost:8080/api-docs.json отсутствуют все данные SPEC API. {"apiVersion":"0.1","swaggerVersion":"1.1","basePath":"http://localhost:8080","apis":[{"path":"/api-docs.{format}/pet","description":"none"}]}

person Yuval Shubert    schedule 07.03.2016    source источник
comment
github.com/ChechaValerii/node-typescript-mongodb   -  person Valera Checha    schedule 16.08.2019


Ответы (2)


Я предлагаю описать совместимый с Swagger API, используя yaml или json, и на их основе сгенерировать сервер.

swagger-server может создавать API поверх express в режиме реального времени (без генерации исходного кода).

Существуют JavaScript генераторы кода:

  • Вызовите клиент swagger-codegen с помощью -l nodejs-server

  • swagger-node — отличная альтернатива, но ее трудно интегрировать с TypeScript

person HenriTel    schedule 17.04.2016
comment
Это лучший подход. Многие проекты стараются создавать сервисы из кода —> чванство, но я считаю, что это не лучший подход. Написав спецификацию swagger в формате JSON (который является более стандартным, чем YAML из-за интеграции схемы Json), вы не привязываете документацию своего API к конкретной среде выполнения или реализации. Вместо этого вы пишете по спецификации, а затем создаете клиенты или серверы на основе этой спецификации с помощью swagger-codegen. - person coding; 30.08.2017

Да, вы можете легко создавать документы Swagger и OpenAPI из типов TypeScript, используя tsoa. Файл readme содержит всю информацию об установке, которая вам потребуется, чтобы начать его использовать. Он совместим с express, hapi, koa и другими (благодаря возможности добавить свой собственный шаблон для предпочитаемого типа сервера):

https://github.com/lukeautry/tsoa

Преимущества tsoa перед другими библиотеками:

  • он генерирует документ swagger/OpenAPI, а также проверяет типы во время выполнения.

(Полная прозрачность: я один из сопровождающих tsoa. ​​Но я был первым потребителем tsoa, ​​и я считаю, что это отличный продукт... поэтому я попросил помочь его поддерживать! :))

person GreeneCreations    schedule 13.08.2019