쿠키는 브라우저가 서버로부터 응답으로 Set-Cookie 헤더를 받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보낸다.
하지만 데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약하다.
세션은 쿠키를 기반으로 구성된 기술
단, 클라이언트가 마음대로 데이터를 확인 할 수 있던 쿠키와는 다르게 세션은 데이터를 서버에만 저장하기 때문에 보안이 좋으나 반대로 사용자가 많은 경우 서버에 저장해야 할 데이터가 많아져서 서버 컴퓨터가 감당하지 못하는 문제가 생기기 쉽다
이것을 보완한게 JWT이다
몽고DB라는 데이터베이스가 엄청 중요한것인줄 알았는데 아니었다니...
내 컴퓨터에 json파일에 저장해도 되고 mySQL을 사용해도 되고
그냥 데이터를 넣었다 뺏다만 할 수 있으면 되는것이었다
rest 아키텍처에 따라 구현된 api
참고글
https://ko.wikipedia.org/wiki/REST
http://haah.kr/2017/06/28/rest-the-coclusion/
객체의 구조분해 할당이 헷갈렸는데 한번 알아보자.
let options = {
title: "Menu",
width: 100,
height: 200
};
let {title, width, height} = options;
alert(title); // Menu
alert(width); // 100
alert(height); // 200
또는
const { value } = req.body;
req.body {
value: value
}
router.patch('/todos/:todoId', async(req, res) => {
const { todoId } = req.params; // :todoId를 사용하기위해 params를 가져옴
const { order } = req.body;
});
// 하나의 resource만 바꿀꺼기때문에 parameter를 받는다.
// 여러개의 todoitem 중에서 :todoId만 지정
// todoId를 가진 애가 order 값으로 수정하려한다.
// http://127.0.0.1:8080/api/todos/**61554f0c2ce0d3a0e4c8451c**
// order: 1
authMiddleware와 res.locals는 같이 쓴다
회원가입과 로그인은 사용자인증을 할 수 없기때문에 authMiddleware를 쓰지않는다
사용자 외의 사람들이 호출하는 곳이기 때문이다
mySQL는 sequelize라이브러리를 사용
npm i sequelize mysql2 -S // sequelize 설치사용 명령어
npm i sequelize-cli -D // sequelize 쉽게 사용하도록 도와주는 도구 설치 명령어
npx sequelize init
// 1.models 폴더 안에 index.js가 생성
2.config폴더 안에 config.json파일(이 파일은 데이터베이스에 연결하기 위한 설정이 들어있는 파일) 생성
3.migrations폴더 생성
4.seeder폴더 생성
npx sequelize db:create -->>
'database_development' 데이터베이스 생성
goods모델
npx sequelize model:generate --name Goods --attributes name:string,thumbnailUrl:string,category:string,price:decimal
->> 숫자-create-goods.js 라는 파일이 생성
cart모델
npx sequelize model:generate --name Cart --attributes userId:integer,goodsId:integer,quantity:integer
migration안에 있는 파일의 역할은
데이터베이스에 테이블을 생성하고 제거할 때 여기에 있는 파일을 사용합니다.
npx sequelize db:migrate
아래와 같은 명령어가 떠야 성공!
Sequelize CLI [Node: 15.5.1, CLI: 6.2.0, ORM: 6.4.0]
Loaded configuration file "config/config.json".
Using environment "development".
== 20210214073234-create-user: migrating =======
== 20210214073234-create-user: migrated (0.031s)
그리고 databaase_development에 SequelizeMeta, goods, cart라는 테이블이 보여야 성공!
dependency: 서비스를 실행시킬때 필요한 모듈일때 사용