Topic/Node.js | server
-
[ NestJS ] AWS SES 적용 오류Topic/Node.js | server 2023. 7. 29. 11:47
*잘못된 AccessKeyId로 접근했을 때 *잘못된 AccessKeyId로 접근했을 때 올바른 AccessKeyId로 요청할 때랑 잘못된 AccessKeyId로 요청할 때 에러가 다른 걸로 보아 코드 상에 문제라기보다 설정 방법이나 호스트 단에서 에러가 났을거라고 생각이 들어 자료를 찾아보았다. AWS SES를 이용하는 것중에 aws-sdk에 있는 ses를 사용해 transporter를 적용해도 되지만 근본적인 서비스인 nodemailer의 example을 보고 그대로 해보았다. import { BadRequestException, Injectable } from '@nestjs/common'; import * as nodemailer from 'nodemailer'; @Injectable() expo..
-
[ NestJS ] nodemailer로 메일 발송하기Topic/Node.js | server 2023. 7. 23. 10:45
NestJS 프레임워크에서 이메일 발송을 위한 nodemailer 라이브러리를 적용하는 방법입니다. nodemailer 사용 방법 nodemailer 설치 npm install nodemailer 환경변수 설정 (.env) # /.env email_host = "smtp.gmail.com" email_port = "777" email_client_id = '1234-abcd.apps.googleusercontent.com' email_secret = '1q2w3e4r' email_user = 'noreply@‘test.io email_address_from = 'help@test.io’ email_refresh_token = 'aaa' email_access_token = 'bbb' Mailer Serv..
-
[ NestJS ] firstValueFrom과 lastValueFrom의 차이 (feat. RXJS)Topic/Node.js | server 2023. 7. 15. 20:38
firstValueFrom과 lastValueFrom은 RxJS의 두 가지 함수로, 옵저버블(Observable)을 처리하는 방법에 차이가 있다. firstValueFrom firstValueFrom 함수는 옵저버블에서 첫 번째 값을 가져오는 함수이다. 옵저버블이 첫 번째 값을 방출하고 완료되면 해당 값을 반환한다. firstValueFrom은 첫 번째 값을 가져올 때까지 옵저버블의 완료 여부를 기다린다. 만약 옵저버블이 오류를 방출하면 firstValueFrom은 해당 오류를 전달한다. firstValueFrom 예시 import { firstValueFrom } from 'rxjs'; async function fetchData(): Promise { const observable = someServ..
-
[ NestJS ] @IsString 데코레이터와 : string 타입은 뭐가 다를까?Topic/Node.js | server 2023. 7. 8. 12:44
@IsString() 데코레이터와 : string 타입 어노테이션은 두 가지 다른 개념을 나타낸다. @IsString() 데코레이터: @IsString()은 class-validator 라이브러리에서 제공하는 데코레이터로, 해당 필드의 값이 문자열(string) 형식인지를 검증합니다. 즉, 입력된 값이 문자열이 아닌 경우 유효성 검사를 통과하지 못하게 됩니다. 이 데코레이터를 사용하여 DTO 클래스의 name 필드가 문자열 형식으로 제공되어야 함을 나타냅니다. : string 타입 어노테이션: : string은 TypeScript에서 변수 또는 함수 매개변수의 타입을 명시하는 방법 중 하나입니다. 이 경우, name 필드가 문자열(string) 타입의 값을 가지는 것을 TypeScript에 알려줍니다. ..
-
[ NodeJS ] Logger | .gz / gz파일 확인하기 (log.gz)Topic/Node.js | server 2023. 6. 3. 11:55
nodejs에서 winston으로 log를 찍으면서 확인 중 .log파일들은 잘 열리는데 .log.gz 파일을 여니 알 수 없는 문자들로 나오는 상황이 생겨 gz파일을 열어서 확인하는 방법을 찾아보았다. example.log.gz 로그 보는 법 압축된 gzip 파일을 간단히 찾고, 확인가능하다. $ zgrep ‘찾을 단어’ /path/to/test.log.gz $ zgrep ‘GET /faq/url/‘ /path/to/access.log.gz gz 파일 확인하는 방법 $ zcat test.log.gz
-
[ NodeJS ] 백엔드 재부팅 시 PM2 자동실행 설정Topic/Node.js | server 2023. 5. 27. 11:11
pm2는 pm2 start 명령으로 실행할 앱 지정 시 자동으로 프로세스를 관리해주는 프로그램이다. 하지만 서버가 잠깐 중지되었다가 다시 실행되었을 때 pm2는 자동으로 실행되지 않는다. 그래서 우리는 자동으로 재부팅 시 pm2가 실행되게 바꿔줘야한다. pm2 start app.js pm2 startup 명령어로 systemd를 통해서 자동으로 실행되도록 unit파일을 생성한다. pm2 startup [PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin /home/username/.node_modules/lib/node_mod..
-
[ NodeJS ] express에서 swagger로 API 명세서 만들기Topic/Node.js | server 2023. 4. 15. 10:40
포스트맨으로 API 명세서로 활용하고 있었는데 API 서버 정보가 포스트맨 서버에 저장되는 문제가 우려돼 swagger로 자체 API 서버에 연결을 해서 해결을 해보려고 한다. npm i swagger-jsdoc swagger-ui-express —save -dev swagger-jsdoc: jsdoc 주석으로 api 문서를 표현하는 용도 swagger-ui-express: swagger와 express 연결하는 용도 project/swagger/swagger.js const swaggerUi = require("swagger-ui-express") const swaggereJsdoc = require("swagger-jsdoc") const CONFIG = require('../config/config..
-
API 문서작성(명세서)에 관한 비교 (Swagger vs Postman vs GitBook)Topic/Node.js | server 2023. 3. 24. 16:58
Swagger 무료로 제공됨 문서 자체에서 해당 API 테스트 가능 But, API를 카테고리 별로 나누는 기능은 없음 (모든 API가 한 페이지에 나타나서 원하는 API를 찾기 쉽지 않음) Postman publish: 포스트맨 자체에서 바로 문서로 들어갈 수 있다. (따로 주석 작성 X) -> 유지 보수가 용이 Swagger에 비해 원하는 API 찾기 수월함 실제 테스트한 API 기반으로 문서 작성을 해주어 간편함 해당 API에 대한 코멘트만 따로 추가해주면 되어 시간 단축 GitBook UI가 깔끔해 프로젝트 별로 관리가 용이 파라미터와 리스폰스까지 기록하고 보기 편해 API 이해 측면에서 장점이 있음 해당 테스트를 GitBook상에서 직접 해볼 수 없다는 단점이 있음