Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 객체프로그래밍이란
- 자료구조 트리
- 자바
- 카카오코딩테스트
- 코딩테스트기출
- heap정렬
- 프로그래머스
- 백준
- 백준 1924번
- Java heap
- 카카오코테
- 알고리즘
- 백준 1000번 java
- 공부정리
- 백준 1924번 java
- 코테준비
- 힙정렬자바
- 백준 1000번
- 카카오기출
- java method
- 자료구조힙
- 객체프로그래밍
- java
- heap
- 문자열포맷
- 자바문자열
- 개발상식
- 카카오1차
- 프렌즈4블록
- 프렌즈4블록java
Archives
- Today
- Total
일단 시작해보는 블로그
[Node.js] RESTful API 본문
REST는 Representational State Transfer의 약자로서, 월드와이드웹(www)와 같은 하이퍼 미디어 시스템을 위한 소프트웨어 아키텍쳐 중 하나의 형식이다.
REST 서버는 클라이언트로 하여금 HTTP 프로토콜을 사용해 서버의 정보에 접근 및 변경을 가능케 한다.
여기서 정보는 text, xml, json 등 형식으로 제공되지만 요즘 트렌드는 json이다.!.!
HTTP메소드
HTTP/1.1에서 제공되는 메소드는 여러개가 있지만 REST 기반 아키텍쳐에서 자주 사용되는 4가지 메소드는 다음과 같다.
1. GET : 조회
2. PUT : 생성 및 업데이트
3. DELETE : 제거
4. POST : 생성
다음은 user.json을 기반으로 restful api를 작성한 router.js파일이다.
//user.json
{
"first_user": {
"password": "first_pass",
"name": "abet"
},
"second_user": {
"password": "second_pass",
"name": "betty"
},
"newuser": {
"password": "second_pass",
"name": "jinsun"
}
}
// router.js
module.exports = function(app, fs){
app.get('/', function(req, res){
//render함수의 두번째 인자로 json데이터를 전달함으로써 페이지에서 데이터를 사용가능하게 된다.
res.render('index', {
title : "MY HOMEPAGE",
length : 5
});
});
app.get('/list', function(req, res){
fs.readFile(__dirname + "/../data/" + "user.json", 'utf8', function(err, data){
console.log(data);
res.end(data);
});
});
app.get('/getUser/:username', function(req, res){
fs.readFile( __dirname + "/../data/user.json", 'utf8', function(err, data){
var users = JSON.parse(data);
res.json(users[req.params.username]);
})
});
app.post('/addUser/:username', function(req, res){
var result = { };
var username = req.params.username;
//check req validity
if(!req.body["password"] || !req.body["name"]){
result["success"] = 0;
result["error"] = "invalid request";
res.json(result);
return;
}
// load data & check duplication
fs.readFile(__dirname + "/../data/user.json", 'utf8', function(err, data){
var users = JSON.parse(data);
if(users[username]){
//duplication found
result["success"] = 0;
result["error"] = "duplicate";
res.json(result);
return;
}
// add to data
users[username] = req.body;
//save data
fs.writeFile(__dirname + "/../data/user.json",
JSON.stringify(users, null, '\t'), "utf8", function(err, data){
result = {"success" : 1};
res.json(result);
})
})
})
app.put('/updateUser/:username', function(req, res){
var result = { };
var username = req.params.username;
// CHECK REQ VALIDITY
if(!req.body["password"] || !req.body["name"]){
result["success"] = 0;
result["error"] = "invalid request";
res.json(result);
return;
}
// LOAD DATA
fs.readFile( __dirname + "/../data/user.json", 'utf8', function(err, data){
var users = JSON.parse(data);
// ADD/MODIFY DATA
users[username] = req.body;
// SAVE DATA
fs.writeFile(__dirname + "/../data/user.json",
JSON.stringify(users, null, '\t'), "utf8", function(err, data){
result = {"success": 1};
res.json(result);
})
})
});
app.delete('/deleteUser/:username', function(req, res){
var result = { };
//LOAD DATA
fs.readFile(__dirname + "/../data/user.json", "utf8", function(err, data){
var users = JSON.parse(data);
// IF NOT FOUND
if(!users[req.params.username]){
result["success"] = 0;
result["error"] = "not found";
res.json(result);
return;
}
// DELETE FROM DATA
delete users[req.params.username];
// SAVE FILE
fs.writeFile(__dirname + "/../data/user.json",
JSON.stringify(users, null, '\t'), "utf8", function(err, data){
result["success"] = 1;
res.json(result);
return;
})
})
})
}
전체 코드 : https://github.com/ilikeu7246/nodeJS_study/tree/master/express_tutorial_ejs
'개발 > Node.js' 카테고리의 다른 글
[Node.js] 모듈과 미들웨어 개념 (0) | 2019.08.25 |
---|---|
[NodeJS] Express.js에 대하여 (0) | 2019.08.16 |
[Node.js] About NodeJS (0) | 2019.08.08 |
Comments