标签: fastify

NestJS 在拦截器中设置 HttpStatus

我正在使用拦截器来转换我的响应。我想设置HttpStatus内部,但我现在使用的代码不起作用。

import { CallHandler, ExecutionContext, NestInterceptor, SetMetadata } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { classToPlain } from 'class-transformer';
import { ApiResponse } from '../models/apiResponse';

export class TransformInterceptor implements NestInterceptor {
  intercept(
    context: ExecutionContext,
    next: CallHandler<ApiResponse | any>,
  ): Observable<ApiResponse | any> {
    return next.handle().pipe(
      map(data => {
        const http = context.switchToHttp();
        const res = http.getResponse();

        if(data instanceof ApiResponse) {
          if(data.status !== undefined) {
            res.status(data.status);
          }
        }

        return classToPlain(data); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript nestjs fastify

5
推荐指数
1
解决办法
6839
查看次数

如何从 Fastify 服务器中的 URL 解析查询字符串参数?

我是一个全新的 fastify,但我有一个 fastify 服务器正在运行。我想解析查询字符串,例如:

http://fake.com/?user=123&name=ali
Run Code Online (Sandbox Code Playgroud)

我想从上面的 URL 中获取“用户”和“名称”值。我目前的代码是这样的:

fastify.route({
  method: 'GET',
  url: '/',
  handler: async (request, reply) => getCompanyUsers(request, reply, services)
});
Run Code Online (Sandbox Code Playgroud)

我想获取“user”和“name”的值,然后将这些值传递给 getCompanyUsers 函数。

任何帮助表示赞赏。

谢谢

request.querystring node.js query-string querystringparameter fastify

5
推荐指数
2
解决办法
9075
查看次数

使用 graphql-upload、apollo-server-fastify 和 NestJS 代码优先方法上传文件

使用以下包/技术组合(及其相应的依赖项未列出)从服务器上的客户端接收文件上传的正确实现是什么:

  • graphql-upload
  • apollo-server-fastify
  • @nestjs/platform-fastify (代码优先方法)

理想情况下,我们正在尝试使用 NestJS GraphQL Code First 技术(除了多个文件而不是一个文件)来实现以下内容(来自apollo 服务器文件上传

const { ApolloServer, gql } = require('apollo-server');

const typeDefs = gql`
  type File {
    filename: String!
    mimetype: String!
    encoding: String!
  }

  type Query {
    uploads: [File]
  }

  type Mutation {
    singleUpload(file: Upload!): File!
  }
`;

const resolvers = {
  Query: {
    uploads: (parent, args) => {},
  },
  Mutation: {
    singleUpload: (parent, args) => {
      return args.file.then(file => {
        //Contents of Upload scalar: https://github.com/jaydenseric/graphql-upload#class-graphqlupload
        //file.stream …
Run Code Online (Sandbox Code Playgroud)

reactjs graphql apollo-server nestjs fastify

5
推荐指数
1
解决办法
880
查看次数

fastify, jest: 在 fastify 实例上调用 .close() 后运行进程

我有以下功能来打开数据库连接并运行我的 fastify 服务器实例 (server.js)

import fastify from "fastify";
import fastifyCors from "fastify-cors";
import { MongoClient } from "mongodb";

import characterRoute from "./routes/character";
import gearRoute from "./routes/gear";

import CharacterDAO from "./dao/character";
import GearDAO from "./dao/gear";

import { seedData } from "./dataSeed";

let connection;
let serverInstance;

// server startup command
export const startServer = async port => {
  try {
    serverInstance = fastify({ logger: false });
    serverInstance.register(fastifyCors, {
      origin: "*"
    });
    serverInstance.register(characterRoute);
    serverInstance.register(gearRoute);

    await serverInstance.listen(port, "0.0.0.0");
  } catch (err) {
    serverInstance.log.error(err);
    process.exit(1); …
Run Code Online (Sandbox Code Playgroud)

node.js jestjs fastify

5
推荐指数
1
解决办法
1529
查看次数

如何在 NestJS Interceptor 中获取处理程序路由(对于 Express 和 Fastify)

我在尝试在我编写的拦截器中获取 NestJS 处理程序的路由时遇到问题。例如,如果控制器有这样的路由:

  @Get('/params/:p1/:p2')
  routeWithParams(@Param() params): string {
    return `params are ${params.p1} and ${params.p2}`;
  }
Run Code Online (Sandbox Code Playgroud)

我希望能够以/param/:p1/:p2编程方式获取价值。使用 url 和去参数化不是一种选择,因为实际上没有一种方法可以以 %100 密封的方式执行此操作。做了一些挖掘,但没有找到记录处理程序的路线的方法。想知道其他人有没有运气?这是我从项目中剥离的一些示例代码:

import { Injectable, ExecutionContext, CallHandler, NestInterceptor } from '@nestjs/common';
import { Observable } from 'rxjs';
import { Request } from 'express';
import { FastifyRequest } from 'fastify';

function isExpressRequest(request: Request | FastifyRequest): request is Request {
  return (request as FastifyRequest).req === undefined;
}

@Injectable()
export class MyInterceptor implements NestInterceptor {
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> …
Run Code Online (Sandbox Code Playgroud)

express nestjs fastify

5
推荐指数
1
解决办法
2232
查看次数

如何在 NestJS 的响应中设置标头字段?

我想:

    @Post('login')
    async login(@Body() body: AuthDto, @Res() res: Response) {
        const loginResponse = await this.authService.login(body);
        console.log('loginResponse', loginResponse)
        res.headers.set('x-access-token', loginResponse.access_token)
        return loginResponse
    }
Run Code Online (Sandbox Code Playgroud)

但没有骰子。我收到一个错误:

TypeError: Cannot read property 'set' of undefined
Run Code Online (Sandbox Code Playgroud)

typescript nestjs fastify

5
推荐指数
3
解决办法
6695
查看次数

NestJS Fastify 身份验证

所以我用 Fastify 替换了 ExpressJS,但我的问题是 Nest-Passport 不支持 fastify,我们有 Nest-Passport 的替代品吗?或者关于如何使用令牌保护nestJS中的RestAPI的任何解决方案?

passport.js nestjs fastify nestjs-fastify

5
推荐指数
2
解决办法
3763
查看次数

在 NestJS 中,有没有办法将数据从 Guards 传递到控制器?

所以我目前在我的组织中广泛使用 NestJS。出于身份验证的目的,我们使用我们自己的守卫。所以我的问题是,如果有任何方法可以将数据从警卫传递到控制器,除了response.localsexpressjs ,任何人都可以指导我吗?这对框架造成了严重的依赖,我现在不希望这样。

TIA。

javascript express nestjs fastify

4
推荐指数
2
解决办法
5548
查看次数

fastify-plugin 的具体用途是什么

我是 node.js 的 fastify 框架的新手,我在问fastify-plugin的确切用途是什么, 因为我无法理解它背后的想法。我尝试了一些带或不带插件的代码,但我没有注意到其中的区别。除了一些行为,如:

1- 我可以覆盖我启动的装饰器并用fastify-plugin包装它。

2- 我可以使用装饰器并将其与其他已注册的插件共享。

javascript node.js fastify

4
推荐指数
1
解决办法
523
查看次数

如何使用 TypeScript 设置 @fastify/swagger 和 @fastify/swagger-ui?

我是 Fastify 新手,我正在尝试用它设置 swagger 文档。我正在使用 TypeScript,我发现的所有示例都使用 JavaScript 和require语法。

我尝试尽可能遵循示例,但现在我的文档没有显示/我创建的路线的任何内容。

这是我当前的代码:

import fastifySwagger from '@fastify/swagger';
import fastifySwaggerUi from '@fastify/swagger-ui';
import Fastify from 'fastify';

import { errorBoundary } from './plugins/errorBoundary';

const fastify = Fastify({
  logger: true
});

const port = process.env.PORT || 3003;

// Set custom error handler.
fastify.setErrorHandler(errorBoundary);

// Register @fastify/swagger plugin.
fastify.register(fastifySwagger, {
  openapi: {
    info: {
      title: 'Forest Fire API',
      description: 'Forest Fire API Documentation',
      version: '1.0.0'
    },
    servers: [
      {
        url: 'http://localhost'
      }
    ], …
Run Code Online (Sandbox Code Playgroud)

swagger typescript openapi fastify fastify-swagger

4
推荐指数
1
解决办法
5492
查看次数