pacakage.json 생성
npm init 명령어로 package.json을 만들어준다.
package.json에는 프로젝트가 사용 중인 패키지의 정보가 담겨있다.
package.json 문서를 통해 패키지를 쉽게 관리할 수 있다.
npm init
npm init 명령어를 입력하면 패키지 이름, 정보 등등... 정보를 입력하라고 나오는데 특별히 입력할 정보가 없다면 모두 그냥 넘겨도 된다.
패키지 설치
이제 express 웹 서버를 만들 때 유용하게 쓸 수 있는 패키지를 npm install 명령어를 통해 추가해보자.
- express : express 프레임워크
- cors : cross origin 관련 설정
- json : json 파싱
- body-parser : request body 파싱 (express 버전이 4.16이상이면 설치하지 않아도 됨)
- nodemon : 서버 변경사항이 생기면 서버를 껐다 킬 필요없이 바로 반영
- mysql : mysql 연결
npm install express cors json body-parser nodemon
package.json의 dependencies를 보면 사용 중인 패키지와 버전 정보를 확인할 수 있다.
{
"name": "express-practice",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.20.2",
"cors": "^2.8.5",
"express": "^4.19.2",
"json": "^11.0.0",
"nodemon": "^3.1.0"
}
}
패키지를 설치하면 node_modules 폴더가 생기는데 이 폴더는 용량이 굉장히 크기 때문에 .gitignore에 등록해서 깃허브에 올리지 않게 주의해야한다.
node_modules 폴더 대신 package.json을 올려서 다른 사람이 사용할 때 npm install을 통해 package.json에 담겨 있는 패키지를 설치하도록 한다.
package.json 설정
package.json 설정을 해보자.
먼저 scripts에 start를 추가한다.
"scripts": {
"start": "nodemon index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
npm start 명령어를 입력하면 nodemon index.js가 실행이 될 것이고 nodemon을 사용했기 때문에 서버 변경사항을 실시간으로 반영할 수 있다.
이제 type을 추가한다.
"type" : "module"
type은 기본 값인 commonjs와 module 둘 중 하나를 선택할 수 있다.
module을 사용하면 ES Module을 사용할 수 있다.
ES Module은 import와 export를 사용해서 외부 자바스크립트 파일을 사용할 수 있게 도와주는 모듈 시스템이다.
html의 script 태그를 통해 자바스크립트 파일을 가져오면 script 가져오는 순서도 고려해야 하고 의존성 여부를 파악하기 어렵지만 ES Module을 사용하면 모듈화를 통해 이러한 문제를 해결할 수 있다.
package.json의 main은 기본적으로 index.js로 되어있다.
index.js 파일을 만들고 그 안에 express 웹 서버를 실행할 수 있도록 코드를 작성한다.
Mysql 연결
Mysql 데이터베이스를 연결해보자.
데이터베이스와 테이블은 미리 만들어두자.
나는 express_practice라는 데이터베이스를 만들고 그 안에 user 테이블을 생성했다.
index.js 작성
여기서 웹 서버를 실행시키기 위한 설정을 진행한다.
import express from "express";
import mysql from "mysql";
const app = express();
// json 받을 수 있게
app.use(express.json());
// 데이터베이스 설정
const db = mysql.createConnection({
host: "localhost",
user: "root",
password: "0000",
port: "3306",
database: "express_practice",
});
// 데이터베이스 연결
db.connect((err) => {
if (err) {
console.log(err);
} else {
console.log("데이터베이스 연결");
}
});
// 3001 포트로 서버 실행
app.listen(3001, () => {
console.log("서버 실행");
});
npm start로 서버를 실행하고 성공 메시지가 잘 출력되는지 확인하자.
우리가 설정해 둔 nodemon으로 index.js를 실행하고 있고 데이터베이스 연결도 잘 되었다.
api 작성
1. GET 쿼리스트링
// GET 쿼리스트링
app.get("/users", (req, res) => {
res.send(`쿼리 스트링 ${req.query.name}`)
});
/users?name=growth
위와 같은 경로로 들어오면 name에 해당하는 값을 가져올 수 있다.
2. GET path parameter
// GET path parameter
app.get("/users/:name", (req, res)=>{
res.send(`path parameter : ${req.params.name}`)
})
/users/growth
path 경로에 해당하는 값을 가져올 수 있다.
3. POST request body
// POST request body
app.post("/users", (req, res)=>{
const {name, age} = req.body
res.send(`request body : ${name}, ${age}`)
})
해당 경로로 JSON 형식의 request body가 들어오면 파싱해서 사용할 수 있다.
데이터베이스 SQL 쿼리
연결한 데이터베이스이 SQL 쿼리를 날려서 유저를 삽입하는 api를 만들어보자.
// POST request body
app.post("/users", (req, res)=>{
const {name, age} = req.body
const sql = "insert into user(name, age) values (?,?)"
db.query(sql, [name, age], (err, results, fileds)=>{
})
res.send(`사용자가 생성되었습니다.`)
})
'공부 > express' 카테고리의 다른 글
[Express] passport 모듈을 통해 jwt 인증, 인가 구현 (1) | 2024.05.21 |
---|---|
[Express] passport 모듈을 통해 쿠키 세션 방식으로 로그인 구현 (0) | 2024.05.18 |
[Express] API 작성법 (라우터, 컨트롤러 분리) (0) | 2024.05.16 |
[Express] mongoose 사용법 (mongoDB ORM) (0) | 2024.05.14 |
[Express] sequelize 사용법 (ORM) (0) | 2024.05.12 |
댓글