-
My Agora states servercodeStates front-end/node(server) 2023. 2. 9. 16:22๋ฐ์ํ
๐ My Agora states server
๐ ํ์ต ๋ชฉํ
์ ์ ํ์ตํ statesAirline Server๋ฅผ ๊ตฌํํด๋ณด์ จ๋ค๋ฉด ์ด๋ ต์ง ์์ต๋๋ค!
airline ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ๊ตฌํํด ๋ด ์๋น
StatesAirline Server
๐ StatesAirline Server ๐ ํ์ต ๋ชฉํ ์ด๋ฅผ ํ์ตํ๊ธฐ ์ ์, ์๋ ๊ธฐ๋ณธ ๋ด์ฉ์ ๋จผ์ ์ดํดํ์ Express ์ฌ์ฉ Refactor Express ๐ Refactor Express ๐Express Express ์ค์น npm install express Hello world! ์์ ๋ง๋ค๊ธฐ Express
hwantech.tistory.com
๐ฃ
์๋ฒ๋ฅผ ์ฒ์ ์คํ ์ํค๋ฉด ๋ฏธ๋ค์จ์ด ์ ํ ๋ถ๋ถ์ด ๋์
๊ทธํ '์ฃผ์/'๋ฅผ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ๋ผ์ฐํธ ๋ถ๋ถ์ด ์คํ๋๊ณ ๋ค์ ์์ฒญ์ ๊ธฐ๋ค๋ฆผ
์ฃผ์/๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ฃผ์๋ก ๋ค์ด๊ฐ๋ฉด ๋ผ์ฐํธ ์คํ x ์๋ฌ์ฒ๋ฆฌ ๋์
1. ๋ฏธ๋ค์จ์ด ์ ํ ๋ถ๋ถ์ด ๋์
airline / app.js
const express = require('express'); const cors = require('cors'); const app = express(); // ๋ชจ๋ ์๋ฒ๋ ์์ฒญ์ ๋ฐ์์ ์๋ ํฌํธ ๋ฒํธ๋ฅผ ํ์๋ก ํฉ๋๋ค. // HTTP server์ ํ์ค ํฌํธ๋ ๋ณดํต 80 ๋ฒ ์ด์ง๋ง, ๋ณดํต ๋ค๋ฅธ ์๋ฒ์์ ์ฌ์ฉ์ค์ด๊ธฐ ๋๋ฌธ์ ์ ๊ทผํ ์ ์์ต๋๋ค. // ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋ณดํต ํ ์คํธ ์๋ฒ ํฌํธ๋ก 3000, 8080, 1337 ๋ฑ์ ํ์ฉํฉ๋๋ค. // PORT๋ ์ํํธ์ ํธ์์๋ ๊ฐ์ต๋๋ค. ์๋ฒ๋ก ์์ฒญ์ ๋ฐ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ด ํฌํธ ๋ฒํธ๋ฅผ ์ค์ ํฉ๋๋ค. // (* ๋์ ๋ฐ๋ผ ๋ค๋ฅธ ํฌํธ๋ฒํธ๋ฅผ ์ด๊ณ ์ถ๋ค๋ฉด, ํ๊ฒฝ ๋ณ์๋ฅผ ํ์ฉ ํ๊ธฐ๋ ํฉ๋๋ค.) const port = 3001; const flightRouter = require('./router/flightRouter'); const bookRouter = require('./router/bookRouter'); const airportRouter = require('./router/airportRouter'); app.use(cors()); app.use(express.json()); app.use('/flight', flightRouter); app.use('/book', bookRouter); app.use('/airport', airportRouter); app.get('/', (req, res) => { res.status(200).send('Welcome, States Airline!'); }); app.use((req, res, next) => { res.status(404).send('Not Found!'); }); app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send({ message: 'Internal Server Error', stacktrace: err.toString() }); }); app.listen(port, () => { console.log(`[RUN] StatesAirline Server... | http://localhost:${port}`); }); module.exports = app;
app.js
const express = require('express'); const app = express(); const cors = require('cors'); const morgan = require('morgan'); // morgan ๋ฏธ๋ค์จ์ด๊ฐ ์ธํ ๋์ด ์์ต๋๋ค. // HTTP ์์ฒญ logger๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฏธ๋ค์จ์ด ์ ๋๋ค. app.use(morgan('tiny')); // TODO: cors๋ฅผ ์ ์ฉํฉ๋๋ค. app.use(cors()); // TODO: Express ๋ด์ฅ ๋ฏธ๋ค์จ์ด์ธ express.json()์ ์ ์ฉํฉ๋๋ค. app.use(express.json()); const port = 4000; const discussionsRouter = require('./router/discussions'); // TODO: app.use()๋ฅผ ํ์ฉํ์ฌ /discussions ๊ฒฝ๋ก๋ก ๋ผ์ฐํ ํฉ๋๋ค. app.use('/discussions',discussionsRouter); app.get('/', (req, res) => { // ์๋ฒ ์ํ ํ์ธ์ ์ํด ์ํ ์ฝ๋ 200๊ณผ ํจ๊ป ์๋ต์ ๋ณด๋ ๋๋ค. res.status(200).send('fe-sprint-my-agora-states-server'); }); const server = app.listen(port, () => { console.log(`[RUN] My Agora States Server... | http://localhost:${port}`); }); module.exports.app = app; module.exports.server = server;
2. '์ฃผ์/'๋ฅผ ๋ค์ด๊ฐ๋ฉด ๋ผ์ฐํธ ์คํ
aipalneRouter.js
const { findAll } = require('../controller/airportController'); const express = require('express'); const router = express.Router(); router.get('/', findAll); module.exports = router;
discussions.js
// TODO: discussions ๋ผ์ฐํฐ๋ฅผ ์์ฑํฉ๋๋ค. const { discussionsController } = require('../controller'); const { findAll, findById } = discussionsController; const express = require('express'); const router = express.Router(); // TODO: ๋ชจ๋ discussions ๋ชฉ๋ก์ ์กฐํํ๋ ๋ผ์ฐํฐ๋ฅผ ์์ฑํฉ๋๋ค. router.get('/', findAll); // TODO: :id์ ๋ง๋ discussion์ ์กฐํํ๋ ๋ผ์ฐํฐ๋ฅผ ์์ฑํฉ๋๋ค. router.get('/:id', findById); module.exports = router;
3. controller ๊ธฐ๋ฅ ๊ตฌํ
controller/index.js
const { agoraStatesDiscussions } = require("../repository/discussions"); const discussionsData = agoraStatesDiscussions; const discussionsController = { findAll: (req, res) => { // TODO: ๋ชจ๋ discussions ๋ชฉ๋ก์ ์๋ตํฉ๋๋ค. return res.status(200).json(discussionsData) }, findById: (req, res) => { // TODO: ์์ฒญ์ผ๋ก ๋ค์ด์จ id์ ์ผ์นํ๋ discussion์ ์๋ตํฉ๋๋ค. const { id } = req.params; let filterData = discussionsData.filter((discussion) => { return discussion.id === Number(id); }); if (filterData.length !== 0) { return res.status(200).json(filterData[0]); } else { return res.status(404).json(filterData); } }, }; module.exports = { discussionsController, };
pakage.json๋ณด๊ณ ์๋ฒ ์คํ
postman์ผ๋ก GET์์ฒญ ํด๋ณด๊ธฐ
๋๋์
๋ฐ๋๋ก ๊ธฐ๋ฅ ๊ตฌํ์ ํ๊ณ ๋ผ์ฐํฐ๋ฅผ ๋ง๋ค์ด์ ์ก์ ์ ๋ณด์ฌ์ฃผ๋ ์คํ๊ณผ์ ์ ๋ง์ง๋ง
์ฐ๋ฆฌ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ์ ํ ํ๊ณ ๋ผ์ฐํฐ๋ฅผ ์คํํ ๋ค ๊ธฐ๋ฅ๊ตฌํ์ ํด์ผํ๋ ๊ณผ์ ์ ๊นจ๋ฌ์ ๊ฒ์ด
์ ๋ง ์ด๋ ค์ ๋ค ๊ธฐ๋ฅ๊ตฌํ๋ ์ด๋ ต์ง๋ง ์ด๋ฐ ํ๋ฆ์ ์ดํดํ๋๋ฐ 2~3์ผ ๊ฑธ๋ฆฐ ๊ฒ ๊ฐ๋ค,,,
์์ง๋ ํ๋ก ํธ๋ ๋ฐฑ์ด๋ ์๋ฒ ํํ์ด ์ด๋ค์ง๋ ๊ณผ์ ์ด ์ ํํ๊ฒ ์ดํด๋ ์๋๋ค,,,
์ธ์ ์ฏค ๋ ๋ ค๋ ;;;;
๋ฒ์จ ์ฝ๋์คํ ์ด์ธ ๋ ์น์ 2๊ฐ ๋ง๋ฌด๋ฆฌ๋์๋ค,,, ์๋ฒ ์ฐ๋์ด ์ง์ง ํ๋ก ํธ์์ ๋ ์ ค ์ด๋ ค์
ํ๋ก ํธ ๋ง๋ ๊ฐ์ฆ์ !
๋ฐ์ํ'codeStates front-end > node(server)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์น ํ์ค & ์ ๊ทผ์ฑ (0) 2023.02.28 JSON.stringify (0) 2023.02.14 StatesAirline Server (0) 2023.02.09 Refactor Express (0) 2023.02.08 Mini-Node Server (0) 2023.02.08