Node.js/express

    [node.js] localhost https 적용 (SSL)

    서론 로컬에서 개발할 때 http://localhost:8000 과 같은 형태의 URL을 상용하게 됩니다. 하지만 소셜 로그인을 local에서 수행하고 싶을 때 벤더사마다 다른 보안 정책으로 https 프로토콜에서만 로그인이 가능하도록 막아놓는 경우가 있습니다. 이런 경우 개발을 끝낸 뒤 배포 후 테스트 서버에서 확인해야 하는 번거로움이 생기게 됩니다. 본 포스팅에서 간략히 TLS(SSL) 개념에 대해 정리하고 localhost에서 https 적용 방법에 대해 설명드리겠습니다. HTTP vs HTTPS Http는 Hyper Text Transfer Protocol의 약자로 네트워크를 통해 데이터를 전송하기 위한 프로토콜입니다. Https의 S는 TLS 또는 SSL을 사용하여 HTTP 요청 및 응답 을 암..

    [express] Redis 개념 및 nodejs 캐시 구현 예제

    들어가며 웹 어플리케이션에서 데이터를 캐시하는 것은 매우 중요하며 고성능을 얻을 수 있습니다.물론 데이터를 관계형 데이터베이스에 저장 후 직접 쿼리하여 사용자에게 제공할 수 있지만 매 요청마다 쿼리를 해야하거나 메인페이지에 사용되는 타 API에 비해 상대적으로 많이 호출되는 데이터들은 캐시하는 것이 유리할 수 있겠습니다. 먼저 간단히 Redis에 대해 알아보고 express로 구현 예제를 작성하겠습니다. Redis란? REDIS(REmote Dictionary Server)는 메모리 기반의 “키-값” 구조 데이터 관리 시스템이며, 모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장하는 비 관계형 데이터베이스입니다. 대표적으로 5가지의 데이터 형식으로 사용 가능합니다. St..

    [node.js] DI(의존성 주입) 구현하기

    DI (Dependency Injection) 의존성 주입(DI)는 잘 알려진 기술이다. IoC 컨테이너를 이용한 DI는 여러 모듈의 확장성과 독립성에 큰 도움을 준다. 특히 Spring에서 Java Bean을 이용하여 DI를 구현하는 것이 국내에서 가장 유명하다고 생각한다. 하지만 Node.js에서 DI는 그렇게 활발하게 쓰이고 있지 않는 것 같다. 왜냐하면 require로 모듈을 바로 불러오면 되기 때문에 굳이 필요성을 못 느끼기 때문이다. 하지만 이번에 공부를 하면서 node에서도 DI를 해야 하는 이유를 알게 되어서 예제 코드와 함께 설명하고자 한다. DI와 테스트 코드 의존성 주입은 하나의 패턴이다. 만약 의존되는 클래스를 매개변수로 전달해준다면, 모듈 안에서 클래스를 불러오거나 새로 만드는 것..

    [node.js] 견고한 node.js 프로젝트 설계하기 (번역)

    본 포스트는 Sam Quinn의 “Bulletproof node.js project architecture” 글을 번역한 것입니다. 혼자 보기 너무 아까운 글이기에 번역하여 공유합니다. Introduction Express.js는 node.js REST API를 만드는데 좋은 프레임워크지만, 어떻게 node.js 프로젝트 구조를 잡아야 할지 알려주지 않습니다. 우습게 들릴 수도 있지만, 이건 매우 큰 문제입니다. 올바른 node.js 프로젝트 구조는 코드의 중복을 피해 주고 안정성을 높여주며, 당신의 서비스를 확장하는데 도움이 될 것입니다. 이 포스트는 다년간의 부족했던 설계와 나쁜 패턴, 그리고 수없이 많은 코드 리팩터링 경험을 통해 쓰인 하나의 리서치입니다. 목차 폴더 구조 3 계층 설계 (3 Lay..

    [express] 유효성 검사를 위한 express-validator 사용하기

    서론 Spring-boot를 공부하던 중 Bean Validation에서 제공하는 annotation을 사용해보니 코드가 너무 간결해지고 관리가 편하다는 것을 느꼈다. 그래서 node express에서도 요청 값을 validation 할 수 있는 라이브러리를 찾다가 알게 된 express-validator에 대한 설명글을 쓰고자 한다. 유효성 검사를 좀 더 간편하게! express-validator(npm) express-validator(getting-started) const { body, validationResult } = require('express-validator'); app.post( '/user', body('username').isEmail(), body('password').isLe..

    [node.js] express 회원가입 인증 메일 발송 API

    [AWS SES] 다른 도메인을 발송자로 설정하여 Gmail로 발송하기 2021.06.01 - [AWS/SES (Simple Email Service)] - AWS SES 세팅 및 Gmail 리다이렉션 설정 AWS SES 세팅 및 Gmail 리다이렉션 설정 Intro 현재 회사에서 사용하고 있는 메일서비스는 후이즈메일을 사용하고 있다... charming-kyu.tistory.com 이전 편 에서 내 도메인을 발송자로 설정해 Gmail에서 발송이 가능하니 오늘은 node.js express 환경에서 회원가입 인증메일을 발송하는 API를 만들고자 한다. 만약 본인의 AWS SES가 Sandbox 환경이라면 1일 100건의 발송 제한 및 이메일 인증을 받은 계정으로만 메일을 발송할 수 있기 때문에 발신에 사..