지난 시간에 올린 API에 이어 이번에는 express를 통해 서버를 만들어 보자 !
Rest API는 정보를 HTTP: JSON(Javascript Object Notation), HTML, XLT 또는 일반 텍스트를 통해 몇 가지 형식으로 전송한다고 한다. 클라이언트, 서버 및 리소스로 구성되어 있고 요청이 HTTP를 통해 관리되는 된다. 그래서 매서드를 사용해서 서버간의 데이터를 주고받기가 편리하다고 하다.
- GET : 조회하기
- POST : 생성하기
- PUT : 수정하기
- DELETE : 삭제하기
위와 같은 매소드를 통해 통신을 하므로 몇 가지 예시를 들면서 알아가보고자 한다. Express 프레임워크에서 Query String, Params를 사용하는 방법을 통해 데이터를 가져왔다.
해당 참고 문서 : http://expressjs.com/ko/api.html#req.query
(저번 시간에 쓴 코드를 불러와서 연습해보았다.)
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")
})
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")
})
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")
})
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")
})