본문 바로가기
노드

js 6장

by ㅎㅁ0517 2022. 1. 24.

https://expressjs.com/en/4x/api.html

 

서버를 보다 보기 좋고 편하게 만들 수 있는 프레임워크가 익스프레스임. express()로 어플리케이션을 생성함. URL 객체는 url의 속성으로 꺼내야 했지만 얘는 top level function 어쩌구라 이렇게 한다 함. app.set('port', 포트번호)로 포트를 설정함. app.get( path, (req, res) => {} (callback function) ) 로 응답을 받아옴. 이때 next()함수로 연결해서 여러 개의 콜백 함수를 지정해도 됨. res.send(Buffer object, a String, an object, Boolean, or an Array)로 응답 가능. res.sendFile(path)로 사용.

 

nodemon을 쓰면 코드에 변경이 있을 때 재시작하지 않고 새로고침으로 변경해줌. nodemon [js파일]로 사용. 

 

path.join으로 주면 /가 있든 없든 알아서 적당히 합쳐 줌.

 

app.use([path,] callback [, callback...]). 이때 path를 적지 않으면 모든 요청에 실행되고 이러한 미들웨어 함수들은 순서대로 실행되므로 순서에 유의해야 함. 보통은 (req, res, next)의 인자를 가지고 에러 처리를 위해서 (err, req, res, next) 를 가지기도 함. next를 하지 않으면 함수가 가지는 다음 함수로 넘어가지 않음. 주소가 다르면 상관 없음. 

 

dotenv .env 파일에 변수값들을 저장하고 이를 process.env.변수명= 값으로 접근 가능함.

 

morgan은 로그로 요청, 응답에 관한 정보를 줘서 확인하기 편리.

 

static은 파일을 주는데 express.static(폴더)로 주면 그 폴더에 있는 파일들을 줌. public 폴더에 있는 파일을 /--/--/-- 형식으로 가져올 수 있음. app.use(경로, express.static(폴더))로 주면 http://localhost:3000/경로/폴더/asdf.html 처럼 접근 가능함. 

 

express.json은 json타입 post data를 파싱해서 req.body로 만들어 줌. 그런 다음 이를 req.body로 쓰면 됨. url encoded 형식은 app.use(express.urlencoded(옵션))로 하고 버퍼 데이터나 텍스트 데이터도 가능함. 

app.post("/posturl",function(req,res,next){
    console.log(req.body);
    res.send("response");
});

 비슷하게 cookieParser도 있는데 cookieParser(키)를 넣어주면 쿠키를 검증할 수 있음. req.signedCookies에서 확인할 수 있고 그냥 쿠키들은 req.Cookie에서 사용 가능. 쿠키 생성은 res.cookie(속성, 속성,,, 옵션)으로 만들고 { signed:true } 옵션으로 서명을 붙일 수 있음. 이때 서명은 process.env.COOKIE_SECRET임.

 

express-session은 cookie-parser 뒤에 쓰는 것이 좋음. app.use(session( { 옵션들 }))로 구현하고 req.session으로 접근 가능. 세션으로 값을 저장할수도 있지만 req.--처럼 해서 request에 속성으로 값을 저장할 수 있음.

 

multer에 인수들로 목적지를 지정하고 폴더를 만들어 놓으면 됨.  여기서 done(null, 폴더명)처럼 함수를 사용하는데  첫번째 인자는 에러를 받아서 체크하는 그런 느낌인듯. 즉 null은 no error로 실행. app.post(경로, upload.single())을 쓰면 req.file에 객체에 결과가 들어간다. next가 있는지 다음 미들웨어 연결 가능. 여러 파일이면 html input 태그에 multiple을 주고 upload.array()로 받음. 

 

app.get 부분을 하나의 Router로 모을 수 있음. 

 

html을 보다 편한 문법인 퍼그나 넌적스로 바꿀 수 있음.

'노드' 카테고리의 다른 글

노드 8장  (0) 2022.03.03
노드 7장, 9장  (1) 2022.03.03
js 4,5장  (0) 2022.01.19
js 3장  (0) 2022.01.17
nodejs 2장  (0) 2022.01.11

댓글