nodejs 심화주차

togongs·2021년 10월 3일
0

2021

목록 보기
29/30

쿠키와 세션

쿠키는 브라우저가 서버로부터 응답으로 Set-Cookie 헤더를 받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보낸다.
하지만 데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약하다.

세션은 쿠키를 기반으로 구성된 기술
단, 클라이언트가 마음대로 데이터를 확인 할 수 있던 쿠키와는 다르게 세션은 데이터를 서버에만 저장하기 때문에 보안이 좋으나 반대로 사용자가 많은 경우 서버에 저장해야 할 데이터가 많아져서 서버 컴퓨터가 감당하지 못하는 문제가 생기기 쉽다
이것을 보완한게 JWT이다

몽고DB라는 데이터베이스가 엄청 중요한것인줄 알았는데 아니었다니...
내 컴퓨터에 json파일에 저장해도 되고 mySQL을 사용해도 되고
그냥 데이터를 넣었다 뺏다만 할 수 있으면 되는것이었다

REST api

rest 아키텍처에 따라 구현된 api
참고글
https://ko.wikipedia.org/wiki/REST
http://haah.kr/2017/06/28/rest-the-coclusion/

validation

객체의 구조분해 할당이 헷갈렸는데 한번 알아보자.

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
}

params, body (:todoId)

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

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라는 테이블이 보여야 성공!

-S(dependency) / -D(devdependency)

dependency: 서비스를 실행시킬때 필요한 모듈일때 사용

profile
개발기록

0개의 댓글