- express를 사용하여 서버를 만들면 URI를 통해서 API를 사용할 수 있다.
- API 문서를 통해서 서버의 자원을 사용할 수 있다.
- 그렇다면, 클라이언트가 원하는 데이터를 얻기 위해서 URL에 데이터를 추가적으로 더 주었을 때(URI), express에서 어떻게 이 데이터를 받아와 response할 수 있을까?
query
const express = require('express');
const router = express.Router();
router.get('/hi', findAll);
- /hi?name=Kim&age=33 과 같은 URI에 접근하면, 서버에서 req.query 를 통해 데이터를 받을 수 있다.
- query를 시작할 때 ?를 쓰고, 여러 데이터를 받을 때는 &로 데이터를 구분한다.
- req.query는 객체로, req.query.name과 req.query.age에 접근하면, 각각 Kim과 33의 데이터를 얻을 수 있다.
params
const express = require('express');
const router = express.Router();
router.get('/:id', findById);
router.put('/:id', update);
// 생략
- params의 데이터는 라우터에서 경로로 :id로 미리 지정되어 있다.
- /idIs1234 와 같은 경로에 접근하면, 서버에는 req.params.id에 idIs1234가 들어있음을 알 수 있다.
- put역시 params로 데이터를 전달할 수 있다.
- params로 미리 라우터에 :id와 같이 이름을 설정해 놓으면, URL로 데이터를 전달하여 서버에서 정보를 받을 수 있다.
- query와 다르게 ?id=를 쓰지 않아서 경로가 깔끔해질 수 있다.
body
const express = require('express');
const router = express.Router();
router.post('/', create);
router.put('/:id', update);
- GET 메소드에서는 body를 사용하지 않지만, PUT이나 POST등을 사용할 때, 데이터는 body에 담겨져 온다.
- req.body에 객체로 데이터가 담겨져 있다.