๊ด์ฌ์ฌ๋ณ๋ก API๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ถํ ๊น?
express์ Router ์ฌ์ฉํ๊ธฐ
//app.js
const express = require("express");
const app = express();
app.listen(3000);
const userRouter = require("./routes/user");
const videoRouter = require("./routes/video");
app.use("/", userRouter);
app.use("/videos", videoRouter);
app.js์์๋ ์ด๋ค ๊ด์ฌ์ฌ๋ก ๋ผ์ฐํฐ๋ฅผ ๋๋์ง ์์ฑํด์ค๋๋ค
๊ฐ ๋ผ์ฐํฐ๋ค์ routes ํด๋ ํ์์ ํ์ผ์ ๋ง๋ค์ด์ ์ถ๊ฐํด์ค๋๋ค.
// routes/user.js
const express = require('express');
const router = express.Router();
router.use(express.json());
const conn = require('../mariadb');
const { body } = require('express-validator');
const { validate } = require('../utils/validation');
const jwt = require('jsonwebtoken');
require('dotenv').config();
//๋ก๊ทธ์ธ
router.post(
'/login',
(req, res) => {
//...์ฝ๋
});
},
);
//ํ์๊ฐ์
router.post(
'/join',
(req, res) => {
//...์ฝ๋
},
);
//ํ์๊ฐ๋ณ ์กฐํ
router
.route('/users')
.get(
(req, res) => {
//...์ฝ๋
},
)
.delete(
(req, res) => {
//...์ฝ๋
},
);
module.exports = router;
์ด๋ฐ ์์ผ๋ก app.js์์ ๊ณตํต๋ path๋ก ๋ฌถ์ด์ฃผ๊ณ
routes ํ์ผ์์ router๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ํ routes ํ์ผ์์๋ ๊ณตํต์ ์ธ path๋ฅผ ๋ฌถ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํจ์ฑ ๊ฒ์ฌ ๋ฏธ๋ค์จ์ด ์ฌ์ฉํ๊ธฐ
express-validator
const { param, body, validationResult } = require('express-validator');
const { validate } = require('../utils/validation.js');
router.post(
'/join',
[
body('email').notEmpty().isEmail().withMessage('์ด๋ฉ์ผ ํ์ธ ํ์'),
body('password').notEmpty().isString().withMessage('๋น๋ฐ๋ฒํธ ํ์ธ ํ์'),
body('name').notEmpty().isString().withMessage('์ด๋ฆ ํ์ธ ํ์'),
body('contact').notEmpty().isString().withMessage('์ฐ๋ฝ์ฒ ํ์ธ ํ์'),
validate,
],
(req, res) => {
const user = req.body;
...๋ก์ง
},
);
express-validator๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ,
DB์ ํต์ ํ๋ ๋ถ๋ถ๊ณผ ์ ํจ์ฑ ๊ฒ์ฌ ๋ถ๋ถ์ด ๋ถ๋ฆฌ๋์ด์ ๋ก์ง์ ํ์ ํ๊ธฐ ์ ์ฉํฉ๋๋ค.
๋ํ ์ฒด์ด๋์ผ๋ก ์ด๋ค ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๋์ง ํ ๋์ ํ์ธํ ์ ์์ด์ ํธ๋ฆฌํฉ๋๋ค.
https://express-validator.github.io/docs/guides/getting-started
'๐ช๋ฐ๋ธ์ฝ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL]HTTP ๊ธฐ๋ณธ ์ ๋ฆฌ & REST API (0) | 2024.03.17 |
---|---|
[2์ฃผ์ฐจ 3์ผ] CSS, JavaScript (0) | 2024.03.09 |
[Week1] Git ๋ช ๋ น์ด (0) | 2024.02.28 |
[Week1] ๋ฆฌ๋ ์ค ๋ช ๋ น์ด (3) | 2024.02.28 |
[Week1] ๋ฒ์ ๊ด๋ฆฌ ์์คํ (0) | 2024.02.28 |