본문 바로가기
프로그래밍/JavaScript

IM-SPRINT-STATESAIRLINE-SERVER

by 공부하는EJ 2022. 6. 8.
728x90

 

💡statesairline/app.js

// express, cors 사용하기
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);

// domain/ 으로 접속 시 아래 메시지 띄어줌
// req -> 클라이언트에서 오는 요청 정보가 담긴 객체
// res -> 서버가 응답해주는 응답 정보가 담긴 객체
app.get("/", (req, res) => {
    res.status(200).send("Welcome, States Airline!");
});

// next 함수를 호출하면 현재 미들웨어에 이어서 다음 미들웨어를 실행.
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에 대입해주면 된다.
module.exports = app;

 

💡statesairline/router/airportRouter.js

// airpotController에서 findAll 함수 가져옴.
const { findAll } = require("../controller/airportController");
// express와 Router 사용을 위한 선언
const express = require("express");
const router = express.Router();

//domainname/airport/..... 으로 요청이 들어오면 findAll 실행
router.get("/", findAll);

module.exports = router;

 

💡statesairline/controller/airportController.js

const airports = require("../repository/airportList");

module.exports = {
    // [GET] /airport?query={query} 요청을 수행합니다.
    // 공항 이름 자동완성 기능을 수행합니다!
    findAll: (req, res) => {
        if (req.query.query !== undefined) {
            console.log(req.query.query);
            const list = airports.filter((item) => {
                return item.code.includes(req.query.query.toUpperCase());
            });
            console.log(json(list));
            return res.status(200).json(list);
        }
        res.json(airports);
    },
};

 

http://localhost:3001/airport를 포스트맨으로 확인해 본 결과!

 

오늘은 여기까지 하고 내일 bookRouter.js/flightRouter.js/BookController.js/flightController.js 마저 복습해봐야 겠다.

728x90

댓글