리액트 학습 노트 (중급) 6일차 정리
express란?
노드로 구축한 서버에 라우팅을 쪼갤 수 있게 지원하는 프레임워크
express 지원 메서드
method | action |
---|---|
get | 가져오기 |
post | 생성하기 |
put | 전체 수정하기 |
delete | 제거하기 |
patch | 부분 수정하기 |
options | 찔러 보기 (서버가 응답이 가능한 상태인지 확인, 핸드쉐이킹 기법) |
head | 헤더만 가져오기 |
약속은 이렇지만 실무에서는 post를 많이 쓴다.
예를 들어
게시물을 가져오고 조회수를 1 올려주기
이런 케이스는
게시물을 가져오는 method는 get인데
조회수를 높여주는 method는 patch라 애매하니까
post로 합의를 한다.
express 라우터 쪼개기
loginRouter.js
postRouter.js
app.js
이런 식으로 파일별로 라우터를 쪼개고
app.js에서 통합한다.
시퀄라이즈
javascript의 간단한 코드를 mysql 쿼리로 컴파일하거나
관계형 디비를 간단하게 설계해주는 ORM.
시퀄라이즈 테이블 설계 지원 메서드
1. belongsTo
1 대 N 관계일 때 N에 해당하는 테이블에 설정.
부모 테이블의 pk 컬럼을 자동으로 생성해준다.
2. hasMany
1 대 N 관계일 때 1에 해당하는 테이블에 설정.
2. belongsToMany
N 대 N 관계일 때 해당 테이블 둘에게 모두 설정.
자동으로 중간의 매핑 테이블을 만들어준다.
두 번째 인자로 { through: 'tablename' } 객체를 넣어서
테이블 명을 설정해줘야 한다.
npx sequelize db:create
디비 설계를 마쳤다면 이 명령어를 npm에 입력했을 때
데이터 베이스를 생성해준다.
nodemon
리액트의 핫리로딩처럼 수정사항을 바로 반영해주고 디버깅도 지원하는 모듈
express의 미들웨어
express.use();
로 등록한 모듈은 다 미들웨어다.
1. cors
브라우저의 도메인과 서버의 도메인이 다르면
브라우저가 서버에게 api요청시 cors 에러가 나는데
이를 서버쪽에서 허락을 하면 에러를 없앨 수 있다.
이를 쉽게 설정할 수 있도록 도와주는 모듈이다.const express = require('express'); const cors = require('cors');
const app = express(); app.use(cors({ origin: true, }));
{ origin: true }
옵션을 주면 자동으로 요청한 도메인을 허락한다.
2. 쿠키와 세션
쿠키와 세션의 컨트롤을 쉽게 도와주는 모듈const express = require('express'); const session = require('express-session'); const cookieParser = require('cookie-parser');
const app = express(); app.use(cookieParser(process.env.COOKIE_SECRET)); app.use(session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, }));
3. json
app.use(express.json())
프론트에서 json으로 데이터를 보냈을 때 req.body에 넣어준다.
- urlencoded
app.use(express.urlencoded({ extended: true }));
프론트에서 formsubmit등등 urlencoded로 데이터를 보냈을 때 req.body에 넣어준다.
Author And Source
이 문제에 관하여(리액트 학습 노트 (중급) 6일차 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@front/리액트-학습-노트-중급-6일차-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)