Express로 REST API서버 만들기

초짜의 개발 공부·2021년 9월 10일
0

node

목록 보기
3/3
post-thumbnail

지난 시간에 올린 API에 이어 이번에는 express를 통해 서버를 만들어 보자 !

Rest API는 정보를 HTTP: JSON(Javascript Object Notation), HTML, XLT 또는 일반 텍스트를 통해 몇 가지 형식으로 전송한다고 한다. 클라이언트, 서버 및 리소스로 구성되어 있고 요청이 HTTP를 통해 관리되는 된다. 그래서 매서드를 사용해서 서버간의 데이터를 주고받기가 편리하다고 하다.


주요 매서드(CRUD)


- GET : 조회하기

- POST : 생성하기

- PUT : 수정하기

- DELETE : 삭제하기

위와 같은 매소드를 통해 통신을 하므로 몇 가지 예시를 들면서 알아가보고자 한다. Express 프레임워크에서 Query String, Params를 사용하는 방법을 통해 데이터를 가져왔다.
해당 참고 문서 : http://expressjs.com/ko/api.html#req.query
(저번 시간에 쓴 코드를 불러와서 연습해보았다.)


- GET() : 조회하기


const express = require("express");
const server = express();

// 첫 번째 인자 패스 또는 url/ 두 번째 인자 콜백함수 
// '/' 에서는 res.send의 응답이 화면에 조회된다. 

server.get('/',(req, res) =>{
  res.send('hello world')
})


server.get('/api/courses:id',(req,res)=>{
  res.send(res.params)
})

server.listen(3000, ()=>{
    console.log("running")
})

const express = require("express");
const server = express();
const data = require('../src/dataList')

// data파일을 불러와서 조회한다. 
// 요청한 아이디와 비교해서 해당 값에 따른 상태코드를 보낸다. 

server.get('/api/data:id',(req, res)=> {
  const data1 = data.filter(el => req.params.id === el.id)
  if (data.length > 0) {
      return res.status(200).json(data1);
    } else {
      return res.status(404).json(null);
    }
})


server.listen(3000, ()=>{
    console.log("running")
})



- POST() : 생성하기


const express = require("express");
const server = express();
const data = require('../src/dataList')

// 요청된 값이 있으면 해당 data에 따라 
// id와 요청된 name이 응답으로 나온다. 
// 만약 data에서 id : 5까지 있으면 
// 생성 매서드를 통해 요청한 이름과 id : 6의 값이 나오게 된다. 

server.post('/api/data:id', (req,res)=>{
  const plusData = {
    id : data.length + 1,
    name : req.body.name
  }
  data.push(plusData)
  res.send(plusData)
})

server.listen(3000, ()=>{
    console.log("running")
})



- PUT() : 수정하기


const express = require("express");
const server = express();
const data = require('../src/dataList');

// 탐색해서 조회되는 아이디가 있으면 
// 요청한 body 값으로 수정하게 한다. 

server.put('/api/data:id',(req, res)=> {
  const data1 = data.forEach((el) => {
    if (req.params.id === el.id){
      if(req.body.name !== undefined){ el.name = req.body.name }
       }
         return res.status(200).json(data1)
      })
   })
  

server.listen(3000, ()=>{
    console.log("running")
})



- DELETE() : 삭제하기



const express = require("express");
const server = express();
const data = require('../src/dataList');

// 요청한 id와 동일 값을 삭제한다. 

server.delete('/api/data:id',(req, res)=> {
  const data1 = data.filter(el => req.query.id !== el.id);
    return res.status(200).json(data1);
   })
  

server.listen(3000, ()=>{
    console.log("running")
})

0개의 댓글