请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请教下如何在controller中实现动态302跳转或json返回?

请教下,如何再controller中实现动态302跳转或json返回?

我的需求是:

  • 如果获取到正常的数据,就返回json串
  • 如果获取不到数据,就重定向到另外一个页面。

通过我下面的代码,是不行的,加了@Res之后,就只能重定向了,无法通过最后的return方式返回json串了。

import { Controller, Get, Param, Res } from '@nestjs/common';
import { Response } from 'express';
import { AppService } from './app.service';

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

  @Get(':id')
  async to(@Param('id') id: string, @Res() res: Response) {
    const urlInfo = await this.appService.getUrlInfo(id);
    // 获取不到信息重定向到一个url页面上
    if (!urlInfo) {
      res.redirect('http://www.baidu.com');
    }
    // 获取到信息就返回json
    return urlInfo;
  }
}

请教下老师,该如何实现我的问题啊? 谢谢!

正在回答

1回答

非常简单,你使用了@Res之后,就需要自己来操作响应的对象了,你就当成一个express的response对象,一个原生的对象,可以使用res.status(200).send(这里要放你要返回给前端的东西)

1 回复 有任何疑惑可以回复我~
  • 提问者 tulies #1
    嗯 是的 我后来自己处理了。只是有点奇怪nest为啥加了@Res之后就不会自动当成返回json处理了…
    回复 有任何疑惑可以回复我~ 2023-01-15 20:51:24
  • 提问者 tulies #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2023-01-20 21:47:33
  • Brian 回复 提问者 tulies #3
    好的不谢,应该的
    回复 有任何疑惑可以回复我~ 2023-02-05 23:57:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信