Redis(Remote Dictionary Server) https://redis.io/ "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비 관계형 데이터베이스 관리 시스템(DBMS)이다. 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS이다. 특징 ① NoSQL NoSQL 데이터베이스 중 하나로 다양한 자료구조를 저장할 수 있다. 대표적으로 Redis, MongoDB가 있다. ② In-memory 디스크가 아닌 I/O가 가장 빠른 메모리에 저장함으로써 빠르다. 단순한 구조의 key-value 방식으로써 빠른 속도를 지원한다. ③ Memory Store + DB Memory Store는 서버를 재시작하는 순간 저장했던 내용들이 날아간다. 서버를 재시작해도 데이터를 ..
요청 객체 (Request) 요청 객체는 일반적으로 콜백에 전달되므로 이름은 원하는 대로 정해도 된다. 보통 req나 request를 사용한다. 요청 객체는 핵심 노드 객체인 http.IncomingMessage 인스턴스에서 시작하며, 익스프레스를 사용하는 경우 익스프레스에서 기능을 추가한다. req.params 이름 붙은 라우트 매개변수를 담고 있는 배열 GET Request의 URL에서 콜론(:) 뒤에 오는 파라미터를 가져올 때(파싱) 사용한다. 실제 URL에 콜론(:)이 입력되지는 않는다. app.get(’/:idx’, (req, res) => { res.send(req.params.idx); }); // http://www.sample.com/comments/777 app.get('/comment..
dotenv node.js 에서는 dotenv 패키지를 통해 환경변수 파일을 외부에 만들고 관리할 수 있다. 깃허브 등에 오픈소스로 프로젝트를 공개할 때 DB 계정 정보를 소스코드 내에 하드코딩하지 않고 외부 환경변수 파일에 작성하고 .gitignore 을 통해 제외하면 안전하다. 1. Install npm install --save dotenv 2. Usage 프로젝트 루트경로에 .env 파일을 생성하고 다음과 같이 작성한다. SERVER_PORT=3000 DB_HOST=localhost DB_USER=root DB_PASSWORD=password 단순하게, 변수명=값 형태를 가지고 있다. 프로젝트 상단에 아래 코드를 적어 환경 변수를 불러온다. require('dotenv').config(); 불러온..
Swagger https://swagger.io/ 스웨거(Swagger)는 Open Api Specification(OAS)를 위한 프레임워크 API들이 가지고 있는 스펙(spec)을 명세, 관리할 수 있는 프로젝트 Swagger의 주된 목적은 RESTful API를 문서화시키고 관리하는 것이다. API 문서를 일반 Document로 작성하면 API 변경 시마다 문서를 수정해야 하는 불편함이 있는데, Swagger 같은 Framework를 이용하면 이를 자동화할 수 있다. Swagger의 5가지 기능 1. API 디자인 Swagger-editor를 통해 api를 문서화하고 빠르게 명세할 수 있다. http://editor.swagger.io/#!/ 2. API Development Swagger-code..
API(Application Programming Interface, 응용프로그램 프로그래밍 인터페이스) 프로그래밍에서 프로그램을 작성하기 위한 일련의 부 프로그램 프로토콜 등을 정의하여 상호 작용을 하기 위한 인터페이스 사양이다. API는 소프트웨어 컴포넌트(Function, Method, Operation)의 기능, 입력, 출력, 그리고 이에 사용되는 자료형으로 표현된다. API 자체는 어디까지나 사양(Specification)만을 정의하기 때문에 구현물(Implementation)과 독립적이다. API가 실제 기능 구현체인 라이브러리와 함께 제공되는 경우도 있으며, 이를 Software Development Kit(SDK)라고 한다. SDK는 보통 API, 라이브러리와 함께 프로그램을 개발하는데 필..
서버 기반 인증 (Session, Cookie) HTTP 프로토콜은 요청에 따른 응답을 받으면 연결이 끊어지고(connectionless) 통신이 종료되면 어떠한 상태 정보도 남지 않는다.(stateless) 따라서 로그인 후 다시 웹페이지에 접근하면 로그인 상태가 유지되지 않는다는 문제점이 있다. HTTP 프로토콜의 인증 문제를 해결하기 위해 사용하는 방법으로 세션과 쿠키를 사용한다. ① 사용자가 로그인 한다. (로그인 정보를 서버로 request) ② 서버는 request가 들어오면 DB를 쿼리 하여 사용자를 검증하고 유효할 경우 사용자의 고유한 ID값을 부여하여 세션 저장소에 저장한 후, 이와 연결되는 세션 ID를 생성하여 response header에 포함시켜 반환한다. ③ 사용자는 서버에서 해당..