브라우저, Node.js를 위한 HTTP 비동기 통신 라이브러리 입니다.
frontend 폴더에서 ‘axios’ 모듈을 설치해 준다.
npm install axios
frontend의 main page에서 ‘hello’라는 버튼을 만든다음 그 버튼을 눌럿을 때 backend로 ‘hello’라는 데이터를 post방식으로 보내보자.
import axios from 'axios';
const back_url = '<http://localhost:4242/hello>';
const handleClick = () => {
axios.post(back_url, {
data: 'hello'
}).then((res) => console.log(res.data)).catch((err)=>console.log(err));
}
const Main = () => {
return (
<button onClick={handleClick}>
hello
</button>
)
}
export default Main;
// ./src/App.tsx
import {BrowserRouter, Route, Switch} from 'react-router-dom'
import Main from './routes/main'
import Lent from './routes/lent'
import Return from './routes/return'
function App() {
return (
<BrowserRouter>
<Switch>
<Route exact path='/'><Main></Main></Route>
<Route path='/lent'><Lent></Lent></Route>
<Route path='/return'><Return></Return></Route>
</Switch>
</BrowserRouter>
)
}
export default App
이제 backend의 /hello에서 express의 router 를 사용하여 데이터를 받아보자.
import express from 'express';
export const router = express.Router();
router.post('/hello', (req:any, res:any, next:any) => {
console.log(req);
res.send({
data: 'hi'
})
})
import express from 'express'
import { router } from './route'
function makeServer(){
const app = express();
const port = 4242;
app.use('/', router); // 추가된 부분
app.use('/', function(req, res){
res.send("hello");
})
app.listen(port, ()=>console.log(`Listening on port ${port}`));
}
makeServer();
이제 frontend (3000 port)와 backend (4242 port) 서버를 둘다 띄운다음 frontend의 mainpage 에서 hello 버튼이 생긴것을 확인해보자. 그 후 hello 버튼을 누르면 콘솔창에 아래와 같은 에러 (CORS error) 가 생길 것이다.