V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bronana
V2EX  ›  Node.js

NestJS + Swagger UI:非 200 状态码 Execute 时返回值不显示问题

  •  
  •   bronana · 1 月 6 日 · 1689 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。

    nestjs + swagger ui

    点击 try it out 和 execute 后,

    好像只有 status 200 的时候,能看到正常的返回值,

    而 201 或者其它状态码就看不到返回值是怎么回事?

    其它状态码就显示的 error: 加一个状态码

    // controller
      @Get('test1')
      test1() {
        return '111';
      }
      @Post('test2')
      test2() {
        return '222';
      }
    

    pic

    9 条回复    2026-02-09 13:07:26 +08:00
    lovedebug
        1
    lovedebug  
       1 月 6 日
    201 本身就可以无 response body 的~
    bronana
        2
    bronana  
    OP
       1 月 6 日
    @lovedebug https://petstore.swagger.io/#/pet/addPet 可是这个可以看到能显示的啊
    pingdog
        3
    pingdog  
       1 月 6 日 via iPhone
    nestjs 响应 post 缺省 201 ,没回显,要回显就手设 200
    pingdog
        4
    pingdog  
       1 月 6 日 via iPhone
    你注意看 swagger example 的 code 200 ,http code 201 一般都不接收 body 了
    bronana
        5
    bronana  
    OP
       1 月 6 日
    @pingdog 谢谢,手动设置 post 的返回状态码为 200 ,确实可以在 swagger ui 中显示了
    jkhuangfu
        6
    jkhuangfu  
       1 月 7 日
    借楼推荐下 nestjs 版的 knife4j ,nestjs-knife4j-plus npm 包
    willsank0430
        7
    willsank0430  
       9 天前
    import { CallHandler, ExecutionContext, HttpStatus, Injectable, NestInterceptor } from '@nestjs/common';
    import { Observable } from 'rxjs';
    import { FastifyRequest, FastifyReply } from 'fastify';
    /**
    * 针对 post 请求默认响应 201 的问题处理
    * */
    @Injectable()
    export class PostInterceptor implements NestInterceptor {
    intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    const request = context.switchToHttp().getRequest<FastifyRequest['raw']>();
    const response = context.switchToHttp().getResponse<FastifyReply['raw']>();
    if (request.method === 'POST') {
    if (response.statusCode === 201) {
    context.switchToHttp().getResponse().status(HttpStatus.OK);
    }
    }
    return next.handle();
    }
    }
    willsank0430
        8
    willsank0430  
       9 天前
    @willsank0430 post.interceptor.ts
    humbass
        9
    humbass  
       3 天前
    一直感觉使用 nestjs 撸代码,js 的轻松自由全没了, 还不如直接上 SpingBoot!
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1335 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:43 · PVG 00:43 · LAX 08:43 · JFK 11:43
    ♥ Do have faith in what you're doing.