728x90
✅ 1. 개념 정리
🔖 서버(Server) & 클라이언트(Client)
- 클라이언트: 요청(Request)을 보내는 쪽 (브라우저, 맵 등)
- 서버: 요청을 받아 처리하고 응답(Response)을 보내는 쪽
- 통신 규약: HTTP/HTTPS
- GET: 데이터 조회
- POST: 데이터 생성
- PUT/PATCH: 데이터 수정
- DELETE: 데이터 삭제
✅ 2.Node.js + Express 버전
📂 폴더 구조
nr-crud/
├─ server.js
├─ package.json
📂 설치
npm init -y
npm install express body-parser
📂 server.js
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const port = 3000;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
let users = [];
// [C] Create
app.post('/users', (req,res) =>{
const { name, email } = req.body;
const id = users.length + 1;
users.push({ id, name, email })
res.json({ message:"User created", user:{ id, name, email }});
})
// [R] Read All
app.get('/users', (req, res) => {
res.json(users);
})
// [R] Read One
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id == req.params.id);
user ? res.json(user) : res.status(404).json({ error: "User not found"});
});
// [U] Update
app.put('/users/:id', (req,res) => {
const user = users.find(u => u.id == req.params.id);
if (user) {
user.name = req.body.name || user.name;
user.email = req.body.email || user.email;
res.json({ message: "User Updated", user });
} else {
res.status(404).json({ error: "User not found" });
}
});
// [D] Delete
app.delete('/users/:id', (req,res) => {
users = users.filter(u => u.id != req.params.id);
res.json({ message: "User Deleted!" });
})
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`)
})
✅ 3. Python + Flask 버전
📂 폴더 구조
flask-crud/
├─ app.py
├─ requirements.txt
📂 설치
sudo apt install python3-venv -y
python3 -m venv venv
source venv/bin/activate
pip install flask
📂 간단한 Flask 서버 코드 만들기
from flask import Flask, request, jsonify
app = Flask(__name__)
users = []
# Create
@app.route('/users', methods=['POST'])
def create_user():
data = request.get_json()
name = data.get('name')
email = data.get('email')
user = {'id': len(users) + 1, 'name': name, 'email': email}
users.append(user)
return jsonify({'message': 'User created', 'user': user}), 201
# Read All
@app.route('/users', methods=['GET'])
def get_users():
return jsonify(users)
# Read One
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
user = next((u for u in users if u['id'] == user_id), None)
if user:
return jsonify(user)
return jsonify({"error": "User not found"}),404
# Update
@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
data = request.get_json()
user = next((u for u in users if u['id'] == user.id), None)
if user:
user['name'] = data.get('name', user['name'])
user['email'] = data.get('email', user['email'])
return jsonify({"message": "User updated", "user": user})
return jsonify({"error": "User not found"}), 404
# Delete
app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
global users
users = [u for u in users if u['id'] != user_id]
return jsonify({"message": "User deleted"})
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=5000)
📂 Flask 서버 실행
python3 app.py
- 실행 후 http://localhost:5000 접속 가능
- 같은 네트워크의 다른 장비에서도 http://<칼리_IP>:5000 접속 가능
- PostMan 에서 API 요청 방법은 해당 링크에서 참고 (메소드는 동일)
✅ POST 요청 테스트
터미널에서도 curl로 테스트가 가능합니다.
curl -X POST http://localhost:5000/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "alice@example.com"}'
GitHub - Koras02/node-express-karl
Contribute to Koras02/node-express-karl development by creating an account on GitHub.
github.com
GitHub - Koras02/flask-crud-example
Contribute to Koras02/flask-crud-example development by creating an account on GitHub.
github.com
728x90
LIST
'보안' 카테고리의 다른 글
[보안] 5. Wireshark와 Nmap으로 네트워크 분석하기 (1) | 2025.08.26 |
---|---|
[보안] 4. Burp Suite 트래픽 분석 및 공격 시뮬레이션 (0) | 2025.08.20 |
[보안] 3. XSS, SQL Injection, CSRF 등 웹 취약점 실습 (3) | 2025.08.17 |
[보안] 1장 보안이란 무엇인가 - Security (1) | 2025.08.14 |