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/listUsersHTTP 메서드 : 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/addUserHTTP 메서드 : 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/2HTTP 메서드 : 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/deleteUserHTTP 메서드 : REST 클라이언트를 사용하여 로컬 시스템에서 DELETE 를 사용하여 정의 된 API에 액세스 해보십시오 . 이것은 다음과 같은 결과를 생성해야합니다-

{"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3}}