본문 바로가기
Express, Next.js/Express

[express] 간단한 rest api 만들기 - (1)

by 방배킹 2024. 3. 7.

npm init

 

해당 명령어를 통해 node.js 환경을 만들어주자

 

 

package.json이 생성되었다.

 

$ npm i express

express 모듈을 설치해주자. (i는 install을 의미한다)

$ npm i nodemon --save-dev -g

nodemon을 설치하자. 코드의 변경사항이 있을경우 서버를 직접 다시 시작하지 않더라고 변경사항을 적용해준다.

--save-dev : 개발 환경에서만 사용하겠다.

-g : 해당 패키지가 아닌 전체에서 사용하겠다. (global)

 

const express = require('express');
const app = express();

app.get('/',(req,res)=>{
    res.send("Hello World");
});

app.listen(3000,()=>{
    console.log("서버 실행중");
});
$ node app.js

$ nodemon app.js

기본 코드를 작성해서 실행해보자.

 

" : " 콜론을 이용해서 파라미터 값으로 라우팅을 할 수 있다.

app.get('/user/:id',(req,res)=>{
    const id = req.params.id;
    res.send(`${id}번 USER 페이지`);
});

 

app.get('/user/:id',(req,res)=>{
    // const id = req.params.id;
    const {id} = req.params; 
    res.send(`${id}번 USER 페이지`);
});

 

{  }를 이용해서 키 값을 넣어서 바로 받을 수 도 있다.

 

간단한 REST api를 구현해보자

// user 배열을 이용해 rest api 만들어보기.
// GET, POST, PUT, PATCH, DELETE
// 응답은 json 포맷 유지

const express = require('express');

const app = express();
const port = 3000;

// Express 4.16 이전 버전의 경우
// const bodyParser = require('body-parser');
// app.use(bodyParser.json());

// Express 4.16 이후 버전
app.use(express.json());
// app.use(express.urlencoded( {extended : false } ));

const user = [
    {
        name: 'alex',
        age: 25,
    },
    {
        name: 'jane',
        age: 20,
    },
    {
        name: 'alex2',
        age: 41,
    }
]


//Read
app.get('/users',(req,res)=>{
    res.send(user);
});
app.get('/user/:id',(req,res)=>{
    const { id } = req.params; 
    if (id >= 0 && id < user.length) {
        console.log(user[id]);
        res.send(user[id]);
    } else {
        res.status(404).send("User not found.");
    }
});
//Create
app.post('/user',(req,res)=>{
    const {name,age} = req.body;
    const data = { name, age }; //const data = {"name":name,"age":age};
    user.push(data);
    console.log("추가된 데이터: ",data);
    res.send(data);
});
//Update
app.put('/user/:id', (req, res) => {
    const { id } = req.params;
    const { name, age } = req.body;
    
    if (id >= 0 && id < user.length) {
        console.log("수정 전 : ", user[id]);
        if (name !== undefined) user[id].name = name;
        if (age !== undefined) user[id].age = age;
        console.log("수정 후 : ", user[id]);
        res.send("수정 완료");
    } else {
        res.status(404).send("User not found.");
    }
});
//Delete
app.delete('/user/:id',(req,res)=>{
    const {id} = req.params;
    if (id >= 0 && id < user.length) {
        console.log("삭제 전 : ", user);
        user.splice(id,1);
        console.log("삭제 후 : ", user);
        res.send("삭제 완료");
    } else {
        res.status(404).send("User not found.");
    }
});


app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
});

 

 

// Express 4.16 이전 버전의 경우
const bodyParser = require('body-parser');
app.use(bodyParser.json());

// Express 4.16 이후 버전
app.use(express.json());

const {name,age} = req.body;

body에 json 데이터를 담아서 서버에 요청을 보냈을때 서버에서 해당 데이터를 받으려면 4.16 이후 버전 부터는

express.json() 모듈을 이용하면 된다.

 

댓글