์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- APPJAM
- 0์ด๋์ด์๋๊ธธ
- SQL
- concurrency
- ๊ธฐ์ด๋ฌธ๋ฒ
- IOS
- binarySearch
- ๋์ ๊ณํ๋ฒ
- GCD
- URLSession
- GroupBy
- SwiftUI
- BFS
- discardableResult
- SwiftUI ํํ ๋ฆฌ์ผ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- dfs
- DynamicProgramming
- Til
- ๊ณ ๋์ kit
- algoritm
- SwiftUI Tutorials
- HAVIT
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ด์งํ์
- algorithm
- Swift
- ์ฐ์ํ์ค๋ถ๋ถ์์ด์ํฉ
- SOPT
- duno
- Today
- Total
suvera-dev ๐ฅฆ
CRUD (1) - ๊ฐ๋ ๋ฐ ํ์๊ฐ์ ๊ตฌํ ์ค์ต ๋ณธ๋ฌธ
โ๏ธCRUD : ๋๋ถ๋ถ์ ์ปดํจํฐ ์ํํธ์จ์ด๊ฐ ๊ฐ์ง๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ
CRUD | ACTION | HTTP Method | SQL |
CREATE | ์์ฑ | POST | INSERT |
READ | ์กฐํ | GET | SELECT |
UPDATE | ์์ | PUT | UPDATE |
DELETE | ์ญ์ | DELETE | DELETE |
๐ช CRUD ์ค์ต
1. Express ํ๋ก์ ํธ ์์ฑ (express crud -> cd crud -> npm i)
2. {{uri}}/user ๊ฒฝ๋ก ์์ฑํ๊ธฐ
2-1. crud/app.js์ ์๋ 8์ค, 23์ค ์์ ๊ธฐ
2-2. crud/routes/index.js์ router.use์ user๋ฑ๋ก
3. ๊ธฐ์กด index.js ํ์ผ
var express = require('express');
var router = express.Router();
router.use("/user", require("./user"));
module.exports = router;
4. ๊ธฐ์กด์ ์๋ users.js ํ์ผ์ ์ง์ฐ๊ณ ์๋ก์ด user.js ํ์ผ ์์ฑ
const express = require("express");
const router = express.Router();
router.post('/signup', (req, res) => {
});
module.exports = router;
๐ฅ ํ์ผ์ ์์ ํ ๋ ๋ง๋ค ์๋ฒ๋ฅผ ์ผฐ๋ค ๊ป๋ค ํ๊ธฐ ๊ท์ฐฎ์ !
nodemon: ํ๋ก์ ํธ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์๋ค๊ฐ, ํ์ผ์ด ์์ ๋ ๊ฒ ๊ฐ์ง๋๋ฉด ์๋ฒ๋ฅผ ์๋์ผ๋ก ์ฌ์์ํด์ฃผ๋ ํด
nodemon ์ ์ญ ์ค์น (ํ ๋ฒ๋ง) ํ ํ๋ก์ ํธ ๊ฒฝ๋ก์์ nodemon์ผ๋ก ์์
๐CURD Router
router.METHOD('path' , (req, res) => {...});
- Method : .get(...), .post(...)
- path : ์ ๊ทผํ path ์ค์
- request : request๋ก ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ค์ด ๋ด๊ฒจ์์
- response : response๋ก ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ด์
- (req, ...
- req.query : {{url}}?member=server , req.query.member === server
- req.params : {{url}}/post/:idx , req.params.idx === 23
- req.body : {“name”: “Suvera", “part”: “server”} , req.body.name === “Suvera”
- req.headers
- req.file
- res) => ...
- res.status(xxx)send(json)
- .status : status code๋ฅผ ์ ์๋ก ์ ๋ ฅ
- .send() : json ํ์์ผ๋ก response body ์ ์ ๋ ฅ , ์ด๋ ๊ท์น์ ์ธ ๋ฐ์ดํฐ๋ก ๋ณด๋ด์ค์ผ ํด๋ผ์ด์ธํธ์์ ํต์ ์ด ์ํ
โก๏ธ์ค์ต
1 ๋จ๊ณ : ์์ฒญ ๋ฐ๊ณ ์๋ต์ฃผ๊ธฐ
2 ๋จ๊ณ : ์๋ฌ ์ฒ๋ฆฌ
3 ๋จ๊ณ : JSON ์๋ต
4 ๋จ๊ณ : ๋ชจ๋ํ
1๋จ๊ณ : ์์ฒญ & ์๋ต
request ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ - user.js์ ์ ์ ์ถ๊ฐํ๊ธฐ - response ๋ฐ์ดํฐ ๋ด๋ณด๋ด๊ธฐ
const express = require("express");
const router = express.Router();
const users = require("../dbMockup/user");
router.post('/signup', (req, res) => {
const { id, name, password, email } = req.body;
const newUser = { id, name, password, email };
users.push(newUser);
res.status(200).send({ status: 200, message: "success", data: newUser});
});
module.exports = router;
API๋ฅผ ์ค๊ณ,๊ตฌ์ถ,ํ ์คํธ ํ ์ ์๋ ํ์ ํ๋ซํผ์ธ POSTMAN
ํ์๊ฐ์ ์์ฒญ ๋ฐ ์๋ต์ด ์ ๋๋์ง ํ์ธ ์๋ฃ !
2๋จ๊ณ : ์๋ฌ์ฒ๋ฆฌ
1. request data ์ฒดํฌ
2. ํด๋น ์ด๋ฉ์ผ์ ๊ฐ์ง ์ ์ ๊ฐ ์ด๋ฏธ ์๋์ง ?
// request data ํ์ธ - 4๊ฐ ์ค ํ๋๋ผ๋ ์๋ค๋ฉด Bad Request ๋ฐํ
if (!id || !name || !password || !email) {
return res.status(400).send({ status: 400, message: "BAD REQUEST"});
}
// ํด๋น ์ด๋ฉ์ผ์ ๊ฐ์ง ์ ์ ๊ฐ ์ด๋ฏธ ์์ ๊ฒฝ์ฐ Already Email ๋ฐํ
const alreadyUser = users.filter(user => user.email === email).length > 0;
if (alreadyUser) {
return res.status(409).send({ status: 409, message: "ALREADY EMAIL"});
}
.filter() : ์ฃผ์ด์ง ๋ฐฐ์ด์ ์กฐ๊ฑด์ ํต๊ณผํ๋ ๋ชจ๋ ์์๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํ
3๋จ๊ณ : JSON ์๋ต (์ผ๊ด๋ ํ์)
- ์ผ๊ด๋ ์๋ต ํ์์ ์ํด util.js ํ์ผ ๋ง๋ค๊ธฐ
const util = {
success: (status, message, data) => {
return {
status,
success: true,
message,
data,
};
},
fail: (status, message) => {
return {
status,
success: false,
message,
};
},
};
module.exports = util;
return res.status(400).send(util.fail(400, "BAD REQUEST"));
res.status(200).send(util.success(200, "ํ์๊ฐ์
์ฑ๊ณต", newUser));
ํด๋ผ์ด์ธํธ์์ ์ํํ ์ํต์ ์ํด ํ์ ๋ง์ถฐ์ฃผ๊ธฐ
4๋จ๊ณ : ๋ชจ๋ํ
์์ฃผ + ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ message, code, util ๋ฐ๋ก ํ์ผ์ ์์ฑํด ๊น๋ํ๊ฒ ์ ๋ฆฌํ๊ธฐ !
๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ก๊ทธ์ธ, ์ ๋ฐ์ดํธ , ์ญ์ ๊ตฌํ ์ค์ต ํด๋ณด๊ธฐ !