백엔드 설계 작업 REST API 1. 할일 추가하기 → POST / api / todos 2. 할일 목록 보기 → GET / api / todos 3. 할일 내용 변경하기 → PATCH / api / todos / :todoId 4. 할 일 순서 변경하기 → PATCH / api / todos / :todoId 5. 할 일 완료하기 → PATCH / api / todos / :todoId 6. 할 일 완료 해제하기 → PATCH / api / todos / :todoId 6. 할 일 삭제 → DELETE / api / todos / :todoId ※주의 ※ 더보기 경로 설정할 때 REST API 즉, 네트워크 표현 수단을 사람이 봐도 이해하기 쉬운 표현으로 정의 하기 위해 seememo, getmemo..
사용자 인증 미들웨어를 사용하는 이유 1. 클라이언트로부터 전달받은 쿠키를 검증하는 작업을 수행 2. 클라이언트의 요청이 인증되었는지 확인함으로써 애플리케이션의 보안을 강화 3. 특정 엔드포인트나 리소스에 대한 접근을 제어하기 위해 사용자의 인증 상태를 확인 4. 토큰의 유효성을 확인하고, 만료된 토큰이나 조작된 토큰에 대한 처리를 수행 커스텀 비즈니스 로직 1. 클라이언트로부터 쿠키를 전달받음 2. 쿠키가 Bearer 토큰 형식인지 확인 3. 서버에서 발급한 JWT가 맞는지 검증 4. JWT의 유저ID를 이용하여 사용자를 조회 5. req.user에 조회된 사용자 정보를 할당 6. 다음 미들웨어를 실행 • 클라이언트가 전달한 쿠키를 바탕으로 사용자를 검증 • 토큰이 만료되진않았느지, 토큰의 형식은 일치..
Js에서 MongoDB를 사용하려면 DB Client 역할을 하는 도구가 있어야 합니다. mongoose라이브러리 • MongoDB에 데이터를 쉽게 읽고 쓰게 해주는 Js라이브러리입니다. • ODM(Object Document Mapper)라고도 부릅니다. • Js의 객체(Object)와 MongoDB의 문서(Document)사이에서 매핑을 수행하는 도구입니다. • 객체를 MongoDB데이터베이스의 문서로 쉽게 변환 하거나, 문서를 객체로 변환해 주는 작업을 수행합니다. 관계형 DB 와 MongoDB mongoose의 컬렉션(Collection)이란? MongoDB에서 문서가 무엇인가 하면 관계형 데이터베이스에서의 하나의 튜플 , 즉 ROW를 의미 하는 것입니다. 또한 MongoDB의 collection..
RDS에 로그인이 되었다 가정하고 필요한 것( Amazon RDS 엔드포인트. 계정명, 비밀번호, 연결할 MySQL DB이름) 1. 해당 프로젝트에 express, mysql2라이브러리 설치하기 # yarn으로 프로젝트를 초기화합니다. yarn init -y # express와 mysql 드라이버를 설치합니다. yarn add express mysql2 2. app.js에서 mysql 정보를 입력해 줍니다. (여기선 AWS RDS 정보사용) // app.js import express from 'express'; import mysql from 'mysql2'; //MySQL 데이터베이스를 Node.js에서 사용할 수 있게 도와주는 라이브러리 const connect = mysql.createConnec..
Request(요청), Response(응답) Request(요청) ■ 클라이언트가 서버로 보내는 메세지를 담는 객체입니다. ■ URL, HTTP 프로토콜, Header, Query Parameter, body data(요청과 함께 전달되는 데이터)등이 포함됩니다. Response(응답) ■ 서버에서 클라이언트로 보내는 메세지를 담은 객체입니다. ■ 상태코드(Status Code), response data, response header등이 포함됩니다. req객체 req.app req 객체를 통해 Express.js의 app객체에 접근할 수 있습니다. req.ip 요청한 Client의 ip주소가 담겨있습니다. req.body Request를 호출할 때 body로 전달된 정보가 담긴 객체입니다. • exp..
RDS(Relational Database Service)란? ● AWS에서 제공하는 분산 관계형 데이터베이스 서비스 입니다. ● 어플리케이션 내에서 관계형 데이터베이스를 간편하게 설정, 운영, 확장이 가능하도록 지원합니다. ● 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 소모적인 관리 작업을 자동화 할 수 있습니다. ● Aurora, PostgreSQL, MySQL, MariaDB, ORACLE, SQL Server과 같은 데이터베이스 인스턴스를 제공합니다. RDS의 장점 1. 관리가 용이합니다. 프로젝트 개념정립부터 배포까지 모든 작업을 쉽게 처리할 수 있습니다. 프로덕션용 관계형 데이터 베이스의 성능을 활용할 수 있습니다. 인프라를 프로비저닝하고 데이터베이스 소프트웨어를 설치 및 ..
API(Application Programming Interface) ■ API는 프로그램끼리 소통하도록 연결해주는 역할을 합니다. ■ 서로 다른 소프트웨어나 어플리케이션 간을 연결해주는 매개체이자 약속입니다. 예시1 ▶ 날씨앱을 이용해 내일의 날씨를 조회한다면, 앱은 날씨 정보를 제공하는 서버에게 정보를 요청해야 하는데 이 때, 앱과 날씨 서버간의 통신을 도와주는것이 API입니다. 서로간의 약속을 한것처럼 API는 정해진 규칙 (어떤정보를 어떻게 요청하는가?, 응답은 어떤 형식으로 받는가?)에 따라 날씨 서버에 정보를 요청하는 역할을 담당합니다. 즉, 날씨 앱의 사용자는 API를 통해 서버로 날씨 정보를 요청(Request)하고 서버는 이 요청을 처리한 뒤 최종 날씨 정보를 API를 통해 반환(Resp..
Node.js는 대표적으로 논 블로킹(Non-blocking) I / O, 싱글 스레드(Single Thread), 이벤트 루프(Event Loop)의 특성이 있습니다. 논 블로킹 I / O(Non-Blocking Input / Output) 블로킹 I/O와 논블로킹 I/O는 프로그램의 실행 흐름을 제어하는 방식입니다. 블로킹 방식 - 프로그램이 특정 작업을 수행하는 동안 다른 작업을 중단시키는 방식입니다. 논블로킹 방식 - 프로그램이 여러 작업을 동시에 처리할 수 있는 장점이 있습니다. I/O - 데이터의 입력(Input) / 출력(Output)을 의미하며 파일을 저장하거나, 불러오는 것을 I/O처리한다라고 합니다. 블로킹 I/O ● 한번에 하나의 작업만을 처리할 수 있으며, 호출된 함수가 자신의 작업..