req : http 통신 시, 요청에 대한 다양한 정보와 meta정보를 품는 express내에 요청에 관련된 모든 내용이 들어있는 객체이다.
express는 req내에 다양한 종류의 세부 데이터들로 접근할 수 있는 데이터들을 정리해놓았다.
req.params
req.query
req.body
req.headers
req.path
네트워크 통신시 다양한 데이터들이 위치해 있는 곳에 들어오는 값들의 각각의 표현으로서 데이터를 긁어올 수 있다.
res : http 통신 시, 응답에 대한 정보를 담는 express내의 응답객체이다.
응답객체도 express내부 다양한 documentation 문건을 보면
res.status(code),
res.send(body),
res.json(json),
res.type(type),
res.sendFile(path, [options], [callback])
등 이미 기존에 잘 정의된 응답객체 내에 기본 정보 요소들이 있다.
response는 클라이언트에게 무언가를 담아서 보내는 입장이기에 항상 메소드안에 다양한 매개변수들이 인자로서 들어가야한다.
app.xxx()의 정체
app : express가 프레임워크로서 기본으로 제공하는 다양한 내부기능을 담아내기 위해 사용하는 객체
const express = require("express"); // --- (1)
const app = express(); // --- (2)
(1) require 메소드를 통해서 express 모듈을 임포트하여 객체를 생성하고 express변수가 참조하도록 하는 행위
(2) express() 함수를 호출하고, app이라는 변수안에 담는 행위
app.use()의 의미
(위의 그림은 app에 middleware로서 추가하는 것을 보여준다)
이 뜻은 일련의 request와 response 객체가 한 차례 통신 사이클 동안 middleware라는 스택들을 통과해야지만 온전히 클라이언트가 요청한 내용에 상응한 응답을 해줄 수 있게 된다.
즉, app.use안에 있는 cors(), morgan()등 모든 기본적인 초기 환경 세팅 요소들은 하나의 미들웨어로서 들어가서 한 차례 훑고 지나가야지만 응답으로서 발휘 될 수 있다.
app.httpMethod()의 의미 (5:05)
app.post('/', functionForpost); //클라이언트의 post요청에 따른 함수 라우팅
app.get('/', functionForGet); //클라이언트의 get요청에 따른 함수 라우팅
app.put('/', functionForPut); //클라이언트의 put요청에 따른 함수 라우팅
app.delete('/', functionForDelete); //클라이언트의 delete요청에 따른 함수 라우팅
참고