미들웨어 기능을 마운트 하거나 지정된 경로에 마운트 하는데 사용
요청에 대한 응답과정 중간에 껴서 어떠한 동작을 해주는 프로그램(함수)
import express from 'express';
const app = express();
import cors from 'cors';
app.use(express.json());
app.use(cors());
const getResult = {'get' : 'get~~~'}
app.get('/gets',(req,res)=>{
res.status(201).send(getResult);
})
app.post('/posts',(req,res)=>{
console.log(req.body.name);
res.status(201).send({'posts':req.body.name + ' 가 너가 보낸거지?'});
})
app.listen(8080);
실행할 코드이다.
여러곳에서 접속가능하게 하기위해cors()
사용
get메소드를 통해 getResult를 반환
post메소드를 통해 해당 객체를 반환
get요청으로 받아온 JSON형태를 확인 할 수 있다.
get요청으로 받아온 JSON형태로 바꾸어 받은 것을 확인
req에
{"name" : "misaka"}
를 붙여서 보내고 이를req.body.name
을 통해misaka
를 다시 res로 반환해준다.
(raw , JSON이라 아래 코드와 같이 JSON.stringify 할 필요 X)
fetch의 2번째 매개변수로
method
headers
body
가 추가되었고 객체 형태로 보내는 것이 아닌 문자열 형태로 보내야하므로 JSON.stringify를 이용해 바꾼 후 전송해준다.
서버에서 요청한 req에 대한 req.body를 제대로 받기 위해서
만약 이부분을 지운다면
TypeError: Cannot read property 'name' of undefined
오류가 뜬다.
인식을 못하게되는 결과다.
fetch('http://localhost:8080/post',{method:"POST",headers : {"Content-Type" : "application/json"},body :JSON.stringify({'name' : 'msk'})}).then(res=> res.json()).then(data=>console.log(data))
customer에서 server로 JSON.stringify의 string형태 전송
server에서는 받은 req.body가 object형태로 이미 존재
fetch를 통해 customer는 받는것이 req.json() 형태로 변환 후 전달받은 데이터를 받는다.