Search code examples
javascriptnode.jsaxiosnestjs

Nestjs using axios


This simple demo has an error 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');
  }
}

What should I do?

[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

Solution

  • You cannot just return the whole AxiosResponse object because it cannot be serialized to JSON. You most likely want to get the response data like this:

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

    or alternatively using Promises:

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