Header 란?
HTTP Header? 요청 주고받을 때, 기본적으로 담겨있는 필수 정보 HTTP Header는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송하는 것
헤더는 크게 4가지로 분류할 수 있다.
이것 외에도 보내는 쪽에서 추가적인 정보를 기입할 수 있고 모든 헤더 정보는 Express 에서 req.get("헤더이름") 으로 가져올 수 있다.
요청과 응답 모두에 적용되지만 바디에서 최종적으로 전송되는 데이터와는 관련이 없는 헤더
컨텐츠 길이나 MIME 타입과 같이 엔티티 바디에 대한 자세한 정보를 포함하는 헤더
HTTP 요청에서 사용되지만 메시지의 컨텐츠와 관련이 없는 패치될 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더
위치 또는 서버 자체에 대한 정보(이름, 버전)과 같이 응답에 대한 부가적인 정보를 갖는 헤더
받은 http 요청의 parameter 는 다양한 방법으로 받을 수 있습니다.
server.use(cors()); // 미들웨어 cors
// body parser 설정
server.use(express.json({extends:true})); // 미들웨어 BodyParser
server.use(express.urlencoded({extended : true}));
// 서버 구동 확인
server.get('/',(req,res)=>{
res.status(200).json({
message:"HuntingNight server is on!"
})
})
const express = require("express");
const Router = express.Router();
const authenticateToken = require("../middleware/authenticateToken");
const characterManager = require("../controller/CharacterManager");
// Router.get('/', ) // 계정 정보 가져오기
Router.get('/',authenticateToken.authenticateToken,characterManager.getAllCharacter);
Router.post('/add',authenticateToken.authenticateToken,characterManager.addCharacter);
Router.patch('/update',authenticateToken.authenticateToken,characterManager.updateCharacter);
module.exports = Router;
결국 Middleware 는 아래와 같은 형태를 지니고 있다.
(req,res,next)=>{
req.### // 요청의 정보를 받을 수 있거나, 요청에 추가 정보를 넣어줄 수도 있다.
res.### // 응답할 내용 설정하거나, 응답하고 끝낸다.
next() // 다음 미들웨어로 넘긴다.
}
req.app : req 객체를 통해 app 객체에 접근할 수 있습니다. req.body : body-parser 미들웨어가 만드는 요청의 body를 해석한 객체입니다. req.cookies : cookie-parser 미들웨어가 만드는 요청의 쿠키를 해석한 객체입니다. req.ip : 요청의 ip 주소가 담겨 있습니다. req.params : 라우트 매개변수에 대한 정보가 담긴 객체입니다. req.query : 쿼리스트링에 대한 정보가 담긴 객체입니다. req.signedCookies : 서명된 쿠키들은 req.cookies 대신 여기에 담겨 있습니다. req.get(헤더 이름) : 헤더의 값을 가져오고 싶을 때 사용하는 메소드입니다.
res.app: res 객체를 통해 app 객체에 접근할 수 있습니다. res.cookie(키, 값, 옵션): 쿠키를 설정하는 메소드입니다. res.clearCookie(키, 값, 옵션): 쿠키를 제거하는 메소드입니다. res.end(): 데이터 없이 응답을 보냅니다. res.json(JSON): JSON 형식의 응답을 보냅니다.(객체를 전달할 경우 직렬화해서 JSON 형태로 전송) res.redirect(주소): 리다이렉트할 주소와 함께 응답을 보냅니다. res.render(뷰, 데이터): 템플릿 엔진을 렌더링해서 응답할 때 사용하는 메소드입니다. res.send(데이터): 데이터와 함께 응답을 보냅니다. 데이터는 문자열, HTML, 버퍼, 객체, 배열일 수 있습니다. res.sendFile(경로): 경로에 위치한 파일을 응답합니다. res.set: 응답의 헤더를 설정합니다. res.status: 응답 시 HTTP 상태 코드를 지정합니다.