Búsqueda de sitios web

typescript - ¿Hay alguna manera de obtener interfaces de tipos para request, response en Nest.js con Fastify?


Estoy aprendiendo Nest.js y al principio de la documentación leí que puedo usarlo no solo con express sino también con fastify, así que configuré mi primer proyecto con fastify. Luego empecé a leer sobre controladores y encontré un problema. Por ejemplo, si quiero obtener más información sobre la solicitud de un usuario, puedo usar ligeramente @Req req: Request y este req es del tipo Request, y es muy fácil obtener esta interfaz si es una aplicación basada en express, solo tienes que instalar @types/express y luego puedes importar la interfaz Request desde express. Pero, ¿cómo (si es posible) puedo obtener la interfaz Request si estoy usando fastify?

Respuesta #1

Así que afirmo que los tipos para fasify ya están dentro de los proyectos Nest porque provienen de @types/node. Si quieres usar interfaces de fastify, solo impórtalas desde el módulo fastify. Ejemplo:

import { Controller, Get, Query, Req } from '@nestjs/common';
import { AppService } from './app.service';
import { DefaultQuery } from 'fastify';

@Controller('math')
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get('add')
  addTwoNumbers(@Query() query: DefaultQuery): number {
    return this.appService.addTwoNumbers(query.value);
  }
}

Si quieres leer más sobre los tipos en fastify, visita este enlace: Tipos de Fastify

Respuesta #2

Instala el paquete fastify e importa FastifyRequest y FastifyReply desde allí:

import { Controller, Get, Req, Res } from '@nestjs/common';
import { FastifyReply, FastifyRequest } from 'fastify';

@Controller('feature')
export class FeatureController {
  @Get()
  async handler(
    @Req() req: FastifyRequest,
    @Res() reply: FastifyReply,
  ) { }
}

Artículos relacionados