Saltar al contenido

tsoa-next / tsoa-next

tsoa-next logotsoa-next

Pronunciado así·uh

OpenAPI- compatible con REST APIs TypeScript y Node

build statusnpm versionQuality Gate Status

Origen del proyecto

tsoa-next continúa el original tsoa proyecto. El repositorio original y sus colaboradores establecieron el establo TypeScript- primero y OpenAPI- la primera base en la que se basa este trabajo. Cuando las notas de liberación histórica o referencias migratorias todavía apuntan hacia arriba, se mantienen intencionalmente para la procedencia.

Objetivo

  • TypeScript controladores y modelos como la única fuente de verdad para su API
  • Una válida OpenAPI (antes Swagger) 2.0, 3.0 o 3.1 espectro se genera de sus controladores y modelos, incluyendo:
    • Caminos (por ejemplo: Obtener /usuarios)
    • Definiciones basadas en TypeScript interfaces (modelos)
    • Parámetros y propiedades modelo marcadas según sea requerido o opcionalmente TypeScript (e.g. myProperty?: la cadena es opcional en OpenAPI e)
    • jsDoc compatible con descripciones de objetos (la mayoría de otros metadatos pueden ser inferidos de TypeScript tipos)
  • Las rutas se generan para el middleware de elección
    • Express, Hapi, y Koa actualmente compatible, otro middleware puede ser soportado usando una plantilla de manillar simple
    • Pagos de solicitud de validación

Filosofía

  • Rely on TypeScript anotaciones de tipo para generar metadatos API si es posible
  • Si las anotaciones de tipo regular no son una forma adecuada de expresar metadatos, use decoradores
  • Utilice jsdoc para metadatos de texto puro (por ejemplo, descripciones de puntos finales)
  • Minimizar la caldera
  • Los modelos están mejor representados por interfaces (estructuras de datos puras), pero también pueden ser representados por clases
  • Validación del tiempo de ejecución tsoa-next debe comportarse lo más cerca posible a las especificaciones que el generado OpenAPI schema describe. Cualquier diferencia en la lógica de validación se aclara mediante advertencias de registro durante la generación de la OpenAPI Especificación (OEA) y/o rutas.
    • Tenga en cuenta que ha permitido OpenAPI 3.0 o 3.1 minimizas las posibilidades de la lógica de validación divergente ya que las formas de esquema más nuevas son más expresivas que OpenAPI 2.0.

Lista de características

  • Generar OpenAPI 2.0, 3.0 o 3.1 documentos directamente desde su TypeScript controladores, modelos y JSDoc comentarios.
  • Treat TypeScript controladores y modelos como fuente de verdad para caminos, parámetros, esquemas, ejemplos, etiquetas y metadatos de seguridad.
  • Generar controladores de ruta específicos para marco Express, Koa, y Hapi, o suministrar su propio Handlebars plantillas para tiempos de ejecución personalizados.
  • Validar la entrada de solicitud en tiempo de ejecución con coacción configurable y manejo adicional-propiedad que permanece alineado con el esquema generado.
  • Expose controlador-local spec endpoints with @SpecPath(...) sin leer un archivo de espectro generado del disco local a la hora de solicitud.
  • Servir incorporado json, yaml, swagger, redoc, y rapidoc objetivos de especificaciones, con los paquetes de IU de docs cargados perezosamente como pares opcionales cuando está disponible.
  • Adjuntar múltiples @SpecPath(...) decoradores al mismo controlador siempre y cuando sus caminos resueltos sean únicos.
  • Cache respuestas de espectro incorporadas o personalizadas con 'none', en proceso 'memory', o un manejador de caché personalizado que puede leer de cadenas o arroyos.
  • Vuelva o string o Readable respuestas de las @SpecPath(...) manipuladores para la documentación a medida o integraciones aguas abajo.
  • Uso @Validate(...) para delegar la validación de plazos de ejecución para apoyar bibliotecas de esquemas externos tales como zod, joi, yup, superstructo io-ts.
  • Personalizar la traducción de validación y el formato de fallo mediante el contexto de validación opcional aceptado por generado RegisterRoutes(...) funciones.
  • Soporta ganchos de autenticación, inyección de dependencia, equipos de respuesta alternativos, cargas de archivos, middleware personalizado y flujos de trabajo de validación personalizada.
  • Usar el tsoa CLI para la generación de espectros y rutas, o llame a las APIs programáticas de tsoa-next/cli.
  • Objetivo moderno Node.js liberaciones con la política de apoyo verificada en CI en los LTS anteriores, LTS actual y Node VNext.

Primeros pasos

API del paquete

  • Decoradores de importación, ayudantes de ejecución y soporte de ruta generados por tsoa-next
  • Importar API de generación programática de tsoa-next/cli
  • Usar el tsoa binario para CLI comandos de generación

Ejemplos

Echa un vistazo a las guías

Usa el repositorio de playground complementario para aplicaciones de ejemplo ejecutables y escenarios centrados en el servidor.

Consulta controladores de ejemplo en las pruebas

Consulta modelos de ejemplo en las pruebas

Se busca ayuda

Contribuir código

Para contribuir (mediante un PR), consulta primero la Guía de contribución

Espacios de nombre

Classes

Interfaces

Tipo Aliases

Funciones

Contributors

No contributors

Changelog

No recent changes

Generación de OpenAPI, generación de rutas y validación en tiempo de ejecución con prioridad en TypeScript.