728x90
SQLite와 React를 사용하여 CRUD(생성, 읽기, 업데이트, 삭제) 기능을 구현하는 방법을 설명해 드릴게요. React는 클라이언트 사이드에서 UI를 다루고, SQLite는 서버 사이드에서 데이터베이스를 관리하는 데 사용됩니다. 이 작업을 수행하기 위해서는 주로 다음과 같은 구성 요소가 필요합니다:
- 백엔드 서버: SQLite 데이터베이스와 상호작용할 API를 제공합니다. Node.js와 Express를 사용하여 이 서버를 구축할 수 있습니다.
- 프론트엔드: React를 사용하여 사용자 인터페이스를 구축합니다. 이 프론트엔드 애플리케이션이 백엔드 서버와 통신하여 데이터를 CRUD 작업을 수행합니다.
1단계: 백엔드 서버 구축 (Node.js + Express + SQLite)
프로젝트 설정:
mkdir backend cd backend npm init -y npm install express sqlite3
서버 코드 작성 (
server.js
):const express = require('express'); const sqlite3 = require('sqlite3').verbose(); const cors = require('cors'); const app = express(); const port = 3001; app.use(express.json()); app.use(cors()); const db = new sqlite3.Database(':memory:'); db.serialize(() => { db.run("CREATE TABLE items (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)"); }); // Create app.post('/items', (req, res) => { const { name } = req.body; db.run("INSERT INTO items (name) VALUES (?)", [name], function(err) { if (err) { return res.status(500).json({ error: err.message }); } res.json({ id: this.lastID, name }); }); }); // Read app.get('/items', (req, res) => { db.all("SELECT * FROM items", [], (err, rows) => { if (err) { return res.status(500).json({ error: err.message }); } res.json(rows); }); }); // Update app.put('/items/:id', (req, res) => { const { id } = req.params; const { name } = req.body; db.run("UPDATE items SET name = ? WHERE id = ?", [name, id], function(err) { if (err) { return res.status(500).json({ error: err.message }); } res.json({ id, name }); }); }); // Delete app.delete('/items/:id', (req, res) => { const { id } = req.params; db.run("DELETE FROM items WHERE id = ?", id, function(err) { if (err) { return res.status(500).json({ error: err.message }); } res.json({ id }); }); }); app.listen(port, () => { console.log(`Server running on http://localhost:${port}`); });
2단계: 프론트엔드 애플리케이션 구축 (React)
프로젝트 설정:
npx create-react-app frontend cd frontend npm install axios
React 컴포넌트 작성 (
src/App.js
):import React, { useState, useEffect } from 'react'; import axios from 'axios'; const App = () => { const [items, setItems] = useState([]); const [newItem, setNewItem] = useState(''); const [editItem, setEditItem] = useState({ id: null, name: '' }); useEffect(() => { fetchItems(); }, []); const fetchItems = async () => { const response = await axios.get('http://localhost:3001/items'); setItems(response.data); }; const handleAddItem = async () => { const response = await axios.post('http://localhost:3001/items', { name: newItem }); setItems([...items, response.data]); setNewItem(''); }; const handleEditItem = async () => { await axios.put(`http://localhost:3001/items/${editItem.id}`, { name: editItem.name }); setItems(items.map(item => (item.id === editItem.id ? editItem : item))); setEditItem({ id: null, name: '' }); }; const handleDeleteItem = async (id) => { await axios.delete(`http://localhost:3001/items/${id}`); setItems(items.filter(item => item.id !== id)); }; return ( <div> <h1>Items</h1> <input type="text" value={newItem} onChange={(e) => setNewItem(e.target.value)} /> <button onClick={handleAddItem}>Add Item</button> {editItem.id && ( <div> <input type="text" value={editItem.name} onChange={(e) => setEditItem({ ...editItem, name: e.target.value })} /> <button onClick={handleEditItem}>Update Item</button> </div> )} <ul> {items.map(item => ( <li key={item.id}> {item.name} <button onClick={() => setEditItem(item)}>Edit</button> <button onClick={() => handleDeleteItem(item.id)}>Delete</button> </li> ))} </ul> </div> ); }; export default App;
3단계: 실행 및 테스트
백엔드 서버 실행:
cd backend node server.js
프론트엔드 애플리케이션 실행:
cd frontend npm start
이제 http://localhost:3000
에서 React 애플리케이션을 열면 SQLite 데이터베이스와 상호작용할 수 있습니다. 모든 CRUD 작업을 테스트해 보세요.
이 예제는 개발 환경에서 사용하는 기본적인 형태로, 실제 프로덕션 환경에서는 보안, 오류 처리, 데이터 유효성 검증, 그리고 데이터베이스 연결 관리를 추가적으로 고려해야 합니다.
728x90
반응형
'ChatGPT 대답' 카테고리의 다른 글
Vue.js를 사용하여 SQLite와 CRUD (0) | 2024.07.21 |
---|---|
Svelte를 사용하여 SQLite와 CRUD (0) | 2024.07.21 |
Three.js 함수 리스트 (0) | 2024.07.21 |
Apache Software Foundation (ASF) 프로젝트 (0) | 2024.07.21 |
프로그램 언어 표 (0) | 2024.07.21 |