Nestjs 使用 axios

新手上路,请多包涵

这个简单的演示有一个错误 https://docs.nestjs.com/techniques/http-module

 import { Get, Controller, HttpService } from '@nestjs/common';
import { AxiosResponse } from 'axios'
import { Observable } from 'rxjs'
@Controller()
export class AppController {
  constructor(private readonly http: HttpService) {}
  @Get()
  root(): Observable<AxiosResponse<any>>  {
    return this.http.get('https://api.github.com/users/januwA');
  }
}

我应该怎么办?

 [Nest] 7356   - 2018-10-18 00:08:59   [ExceptionsHandler] Converting circular structure to JSON +9852ms
TypeError: Converting circular structure to JSON
    at JSON.stringify (<anonymous>)


 nest i
common version : 5.1.0
core version   : 5.1.0

原文由 januw a 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

您不能只返回整个 AxiosResponse 对象,因为它不能序列化为 JSON。您很可能希望得到响应 data 如下所示:

 @Get()
root() {
  return this.http.get('https://api.github.com/users/januwA').pipe(
    map(response => response.data)
  );
}


或者使用 Promises

 @Get()
async root() {
  const response = await this.http.get('https://api.github.com/users/januwA').toPromise();
  return response.data;
}

原文由 Kim Kern 发布,翻译遵循 CC BY-SA 4.0 许可协议

您必须确保将您的响应作为 JSON 处理,您可以将其作为承诺返回并获取数据,使用两者之一或 HttpService 或 axios

 import { Get, Controller, HttpService } from '@nestjs/common';
@Controller()
export class AppController {
  constructor(private readonly http: HttpService) {}
  @Get()
      root(): {
        return this.http.get('https://api.github.com/users/quen2404')
        .toPromise()
        .then(res => res.data)
        .catch(err => /*handle error*/)
      }
}

原文由 Juan Velasquez 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏