NestJS에서 AWS S3에 이미지 업로드 API 작성

개발/NestJS 2021. 9. 17. 08:20

이미지 파일(png, jpg 등)을 AWS S3에 업로드하는 기능을 추가해야하는 일이 생겼다. 이미지 업로드 API를 구축할 때, 다음과 같이 NestJS에서 기본적으로 제공하는 UseInterceptors와 FileInterceptor를 사용하여 API를 호출하여 파일을 전달하는 방식으로 하였다. @Post() @UseInterceptors(FileInterceptor('file')) async uploadPhoto(@UploadedFile() file) { const { Key, Location } = await this.awsService.addToPublic('photos', file); return this.photoService.save({ url: Location, key: Key, }); ..

ElasticSearch 사용하지 않고 Search API 작성

개발/NestJS 2021. 9. 10. 08:20

ElasticSearch를 사용하지 않고, 단어 기반의 통합 검색 기능을 추가해야하는 일이 생겼다. 통합검색 API를 구축할 때, 맨처음에는 다음과 같이 @Body 를 사용하여 body안에 {word: 단어}를 포함시켜 API를 호출하는 방식으로 설계하였다. // @Body를 사용하였을 때 @Get('') search(@Body(){word: string}){ return this.service.search(word); } 위의 코드처럼 작성하고 테스트 했을 때, word를 undefined로 호출시 백엔드로 전달이 되지않는 이슈가 있었다. 구글은 어떤 방식으로 하는지 궁금해서 구글에 검색을 해보고 url을 중점적으로 확인하였다. 구글의 검색 URL을 보고 @Query를 사용하여 API의 url뒤에 ?를..

Article Thumbnail
Faker.js를 통한 Seed API 작성

개발/NestJS 2021. 9. 4. 08:20

백엔드를 개발하다보면 REST API의 GET 메소드에서 DB에서 데이터를 제대로 불러오는지 확인해야하는데 이럴 때 Seed API를 통해 테스트 용도의 fake DB를 구성하는 것이 매번 데이터를 직접 입력해넣는 시간을 절약할 수 있으므로 좋다고 생각했다. TypeScript기반의 NestJS로 백엔드를 구성하다보니 Faker.Js 패키지를 활용하여 Seed API를 작성하였다. Faker.JS의 패키지 설치 방법은 매우 간단하다. npm i faker Faker.JS는 Typescript가 아닌 순수 JavaScript로 작성되어 사용하는 방법에는 두 가지가 있다. //@ts-ignore import faker from 'faker'; const faker = require('faker'); 위와 같..

Ably.io 와 NestJS를 활용한 실시간 채팅

개발/NestJS 2021. 8. 30. 08:20

Ably.io에 대한 글을 쓰게된 계기 PCUP(가칭)이라는 sns 서비스를 만들면서 채팅 기능을 구현할 일이 생기게 되었고, 정석적으로라면 socket.io와 Redis를 활용하여 채팅을 구현하는 것이 맞겠지만, Redis 서버를 사용함으로서 발생하는 비용면에서 Ably.io를 활용해보는 것이 좋겠다 라는 조언에 삽질을 하게 되었고 아아아악, Ably.io를 쓰시는 다른 분들이 삽질을 하지 않았으면 좋겠어서 이 글을 쓰게 되었다. 주의) 제가 0개 국어라 설명이 외계어처럼 느껴지실 수도 있습니다. :D Ably.io에 대해 Ably.io는 채팅, GPS, Multi-User, 그래프나 차트의 실시간 업데이트를 위한 Realtime 서비스이다. Ably.io의 사이트에 들어가보면 Publish, Subs..

Article Thumbnail