-
Nestjs에서 외부 api 호출할 때 HttpModule 사용Nest.js 2023. 11. 15. 16:25728x90
외부 api를 호출 할 일이 생겨서, Nestjs에서 제공하는 HttpModule @nestjs/axios axios를 먼저 설치 했다.
$ npm i --save @nestjs/axios axios
import { HttpService } from '@nestjs/axios'; @Get() async findAll() { return this.httpService.get('https://jsonplaceholder.typicode.com/posts'); }
[Nest] 276 - 11/15/2023, 7:18:23 AM ERROR [ExceptionsHandler] Converting circular structure to JSON
--> starting at object with constructor 'ClientRequest'
property 'socket' -> object with constructor 'TLSSocket'
--- property '_httpMessage' closes the circle
TypeError: Converting circular structure to JSON
--> starting at object with constructor 'ClientRequest'
property 'socket' -> object with constructor 'TLSSocket'
property '_httpMessage' closes the circle
at JSON.stringify (<anonymous>)
at stringify (/app/node_modules/express/lib/response.js:1150:12)
at ServerResponse.json (/app/node_modules/express/lib/response.js:271:14)
at ExpressAdapter.reply (/app/node_modules/@nestjs/platform-express/adapters/express-adapter.js:61:62)
at RouterResponseController.apply (/app/node_modules/@nestjs/core/router/router-response-controller.js:15:36)
at /app/node_modules/@nestjs/core/router/router-execution-context.js:175:48
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at /app/node_modules/@nestjs/core/router/router-execution-context.js:47:13
at /app/node_modules/@nestjs/core/router/router-proxy.js:9:17공식문서를 천천히 다시 읽어보니까
메서드의 반환 값은 HttpServiceObservable이므로 rxjs- firstValueFrom 또는를 사용하여 lastValueFrom Promise 형식으로 요청 데이터를 검색할 수 있습니다.
맨 마지막에 이렇게 적혀 있는데 httpService.get을 바로 return 했을때 리턴값이
Promise<Observable<AxiosResponse<any,any>>>
Observable인걸 알 수 있다. rxjs에서 제공하는 firstValueFrom를 이용하면 잘 가져오는걸 알 수 있다.!!!
또한 에러 핸들링은 rxjs에서 제공하는 catchError를 통해서 하면 된다!
Reference
728x90'Nest.js' 카테고리의 다른 글
Nestjs-500에러 발생시 slack에 알림 (1) 2023.11.17 Fluent Interface(style) (0) 2023.11.17 Nestjs-TypeOrm에서 getRawMany 와 getMany (0) 2023.10.11 Nestjs-typeorm에서 트랜잭션 처리 (0) 2023.10.10 nestjs에서 multer, multer-s3, aws-sdk/client-s3로 멀티 업로드 (0) 2023.10.05