우선 무언가에 대한 코드를 짜기 위해서는 코드를 위한 서드파티 모듈/패키지를 정의한다. 기초적인 API를 만들기 위해서는 dotenv, morgan, cors, nodemon, typeorm, express 등등 필요한 모듈이나 패키지를 require할 수 있어야 한다. 이때 require하는 영역 중에 dotenv를 요청하는 경우에는 dotenv를 불러올때 dotenv에 관리해야 하는 환경변수에 대한 정보를 불러와야하기때문에 코드는 다음과 같이 설정 될 수 있다.
const dotenv = require("dotenv") //dotenv 환경변수 요청
dotenv.config() //dot 요청에 대한 정보 불러오기
이는 한줄로 요약하면 해당코드와 같게 된다.
require("dotenv").config()
환경변수의 경우는 let, const와 같이 변수를 별도로 설정할 필요가 없는 이유(별도로 변수정의 후 사용되지 않는다.)때문에 require("dotenv").config()
로 사용 될 수 있다.
그럼 다음 단계인 다른 서드파티 모듈과 패키지를 요청해보자.
const express = require("express");
const morgan = require("morgan");
const cors = require("cors");
const {Datasource} = require("typeorm");
이때 typeorm의 경우 민감할 수 있는 정보들을 database에 효율적으로 잘 전달하기 위해서 이렇게 만들어 준다.
(예시)
const {datasource_name} = new Datasource({
type : process.env.TYPEORM_CONNECTION,
host : process.env.TYPEORM_HOST,
username : process.env.TYPEORM_USERNAME,
password : process.env.TYPEORM_PASSWORD,
database : process.env.TYPEORM_DATABASE,
port : process.env.TYPEORM_PORT
.
.
.
})
이때
type은 사용하는 패키지의 종류(ex-mysql),
host는 사용하는 host의 주소(ex-127.0.0.1),
username은 사용하는 패키지 종류의 username(default 값을 쓰 경우 root를 쓰기도 한다.),
password는 사용하는 패키지 종류의 설정 비밀번호,
database는 사용하는 database의 명칭,
port는 사용하는 패키지의 종류의 설정 port 정도 이다.
각 설정별로 맞게끔 env로 설정하여 진행하는 것이 좋다.(환경변수의 설정으로 외부에 노출되어서는 안되는 정보들을 설정한다.)
그리고 난 후
datatype에 대한 initialize를 할 수 있도록 한다. 이는 databas와의 연동을 위하여 initialize를 하는 것이다.
이때 연동이 잘 됐을때와 잘 되지 않았을때를 구분하기 위하여 추가적인 코드를 작성해줄 수 있도록 한다.
{database_name}.initialize()
.then(() => {
console.log("🆗🆗🆗DataSource has been initialize~🆗🆗🆗");
})
.catch((err) => {
console.log("❌❌❌DataSource hasn't been initialize❌❌❌");
});
이후
app.xxx
를 사용할 수 있도록 하는데 여기서 app
은 express가 framework로서 기본으로 제공하는 다양한 내부기능(공식문서 내 영문명칭은 'application')을 담아내기 위해 사용하는 객체로 이를 사용할 수 있도록 정의를 내린다.
const app = express();
여기서 app.use()
는 매개변수의 형태로 들어오는 다양한 함수들을 받아 app에 middleware로 사용하는데 미들웨어는 다른 곳에서 추가적으로 공부하고 살펴보도록 하자..
총 정리하면 이정도의 코드가 만들어질 수 있겠다.
require("dotenv").config();
const express = require("express");
const morgan = require("morgan");
const cors = require("cors");
const { DataSource } = require("typeorm");
const mysqlDatabase = new DataSource({
type: process.env.TYPEORM_CONNCETION,
host: process.env.TYPEORM_HOST,
username: process.env.TYPEORM_USERNAME,
password: process.env.TYPEORM_PASSWORD,
database: process.env.TYPEORM_DATABASE,
port: process.env.TYPEORM_PORT,
});
mysqlDatabase
.initialize()
.then(() => {
console.log("🆗🆗🆗DataSource has been initialize~🆗🆗🆗");
})
.catch((err) => {
console.log("❌❌❌DataSource hasn't been initialize❌❌❌");
});
app = express();
app.use(express.json());
app.use(morgan("combined"));
app.use(cors());
-------------------------------------------------------
//이제 여기에 생성 및 적용하고자하는 API코드를 생성한다.//
-------------------------------------------------------
const PORT = process.env.PORT;
const start = async () => {
try {
app.listen(PORT, () => console.log(`server is listening on ${PORT}`));
} catch (err) {
console.error("Failed server listening", err);
throw err;
}
};
start();
이제 초기셋팅은 어느정도 끝났으니...
CRUD(create, read, update, delete)를 하는 단계로 넘어가서 API를 생성해 보도록 하자.