Node.js-RESTful API
REST 아키텍처 란?
REST는 REpresentational State Transfer를 나타냅니다. REST는 웹 표준 기반 아키텍처이며 HTTP 프로토콜을 사용합니다. 모든 구성 요소가 리소스이고 HTTP 표준 메서드를 사용하는 공통 인터페이스에서 리소스에 액세스하는 리소스를 중심으로 회전합니다. REST는 2000 년 Roy Fielding에 의해 처음 소개되었습니다.
REST 서버는 리소스에 대한 액세스를 제공하고 REST 클라이언트는 HTTP 프로토콜을 사용하여 리소스에 액세스하고 수정합니다. 여기서 각 리소스는 URI / 글로벌 ID로 식별됩니다. REST는 다양한 표현을 사용하여 텍스트, JSON, XML과 같은 리소스를 나타내지 만 JSON이 가장 많이 사용됩니다.
HTTP 메소드
다음 네 가지 HTTP 메서드는 REST 기반 아키텍처에서 일반적으로 사용됩니다.
GET − 리소스에 대한 읽기 전용 액세스를 제공하는 데 사용됩니다.
PUT − 새 리소스를 생성하는 데 사용됩니다.
DELETE − 리소스를 제거하는 데 사용됩니다.
POST − 기존 리소스를 업데이트하거나 새 리소스를 생성하는 데 사용됩니다.
RESTful 웹 서비스
웹 서비스는 응용 프로그램 또는 시스템간에 데이터를 교환하는 데 사용되는 개방형 프로토콜 및 표준의 모음입니다. 다양한 프로그래밍 언어로 작성되고 다양한 플랫폼에서 실행되는 소프트웨어 응용 프로그램은 웹 서비스를 사용하여 단일 컴퓨터의 프로세스 간 통신과 유사한 방식으로 인터넷과 같은 컴퓨터 네트워크를 통해 데이터를 교환 할 수 있습니다. 이러한 상호 운용성 (예 : Java와 Python 또는 Windows와 Linux 응용 프로그램 간의 통신)은 개방형 표준을 사용하기 때문입니다.
REST 아키텍처 기반 웹 서비스를 RESTful 웹 서비스라고합니다. 이러한 웹 서비스는 HTTP 메서드를 사용하여 REST 아키텍처 개념을 구현합니다. RESTful 웹 서비스는 일반적으로 JSON 및 HTTP 메소드 세트와 같은 리소스 표현을 제공하는 URI, 서비스 인 Uniform Resource Identifier를 정의합니다.
라이브러리 용 RESTful 만들기
파일에 다음 사용자가있는 사용자의 JSON 기반 데이터베이스가 있다고 가정합니다. users.json:
{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
이 정보를 바탕으로 다음과 같은 RESTful API를 제공 할 예정입니다.
Sr. 아니. | URI | HTTP 방식 | POST 본문 | 결과 |
---|---|---|---|---|
1 | listUsers | 가져 오기 | 빈 | 모든 사용자의 목록을 표시합니다. |
2 | 사용자 추가 | 우편 | JSON 문자열 | 새 사용자의 세부 사항을 추가하십시오. |
삼 | deleteUser | 지우다 | JSON 문자열 | 기존 사용자를 삭제합니다. |
4 | :신분증 | 가져 오기 | 빈 | 사용자의 세부 사항을 표시합니다. |
Ajax 또는 간단한 양식 데이터를 사용하여 프런트 엔드에서 값을 전달하는 방법과 express를 사용하여 처리하는 방법을 이미 알고 있다고 가정하고 모든 예제의 대부분을 하드 코딩 형식으로 유지합니다. Request 목적.
사용자 나열
첫 번째 RESTful API를 구현해 보겠습니다. listUsers server.js 파일에서 다음 코드 사용-
server.js
var express = require('express');
var app = express();
var fs = require("fs");
app.get('/listUsers', function (req, res) {
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
console.log( data );
res.end( data );
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
이제 URL : http://127.0.0.1:8081/listUsers 및 HTTP 메서드 : REST 클라이언트를 사용하여 로컬 시스템에서 GET 을 사용하여 정의 된 API에 액세스 해보십시오 . 이것은 다음과 같은 결과를 생성해야합니다-
솔루션을 프로덕션 환경에 배치 할 때 주어진 IP 주소를 변경할 수 있습니다.
{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
사용자 추가
다음 API는 목록에 새 사용자를 추가하는 방법을 보여줍니다. 다음은 새로운 사용자의 세부 사항입니다-
user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
Ajax 호출을 사용하여 JSON 형식으로 동일한 입력을받을 수 있지만, 관점을 가르치기 위해 여기에서 하드 코딩하고 있습니다. 다음은addUser 데이터베이스의 새로운 사용자에게 API-
server.js
var express = require('express');
var app = express();
var fs = require("fs");
var user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
app.post('/addUser', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
data["user4"] = user["user4"];
console.log( data );
res.end( JSON.stringify(data));
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
이제 URL : http://127.0.0.1:8081/addUser 및 HTTP 메서드 : REST 클라이언트를 사용하여 로컬 시스템에서 POST 를 사용하여 정의 된 API에 액세스 해보십시오 . 이것은 다음과 같은 결과를 생성해야합니다-
{
"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
"user2":{"name":"suresh","password":"password2","profession":"librarian","id":2},
"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3},
"user4":{"name":"mohit","password":"password4","profession":"teacher","id":4}
}
자세히보기
이제 사용자 ID를 사용하여 호출 할 API를 구현하고 해당 사용자의 세부 정보를 표시합니다.
server.js
var express = require('express');
var app = express();
var fs = require("fs");
app.get('/:id', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
var users = JSON.parse( data );
var user = users["user" + req.params.id]
console.log( user );
res.end( JSON.stringify(user));
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
이제 URL : http://127.0.0.1:8081/2 및 HTTP 메서드 : REST 클라이언트를 사용하여 로컬 시스템에서 GET 을 사용하여 정의 된 API에 액세스 해보십시오 . 이것은 다음과 같은 결과를 생성해야합니다-
{"name":"suresh","password":"password2","profession":"librarian","id":2}
사용자 삭제
이 API는 req.body를 통해 입력 데이터를 수신 한 다음 사용자 ID를 기반으로 데이터베이스에서 해당 사용자를 삭제하는 addUser API와 매우 유사합니다. 프로그램을 간단하게 유지하기 위해 ID 2의 사용자를 삭제한다고 가정합니다.
server.js
var express = require('express');
var app = express();
var fs = require("fs");
var id = 2;
app.delete('/deleteUser', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
delete data["user" + 2];
console.log( data );
res.end( JSON.stringify(data));
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
이제 URL : http://127.0.0.1:8081/deleteUser 및 HTTP 메서드 : REST 클라이언트를 사용하여 로컬 시스템에서 DELETE 를 사용하여 정의 된 API에 액세스 해보십시오 . 이것은 다음과 같은 결과를 생성해야합니다-
{"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3}}