English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NodeJS 기본 강의

NodeJS Express.js

NodeJS 버퍼&URL;

NodeJS MySql

NodeJS MongoDB

NodeJS 파일(FS)

NodeJS 다른

Node.js RESTful API

REST는 무엇인가요?

REST(Representational State Transfer)은 Roy Fielding 박사가2000년에 그의 박사 학위 논문에서 제안된 한 소프트웨어 아키텍처 스타일입니다.

표현적 상태 전환(Representational State Transfer, REST)은 일련의 아키텍처 제약 조건과 원칙으로 구성된 집합입니다. 이 제약 조건과 원칙을 만족하는 애플리케이션 또는 설계는 RESTful입니다. 주의해야 할 것은 REST는 표준이 아니라 설계 스타일이라는 점입니다. REST는 일반적으로 HTTP, URI, XML(표준 일반 마크업 언어의 일부) 및 HTML(표준 일반 마크업 언어의 일부)와 같은 널리 사용되는 프로토콜과 표준을 기반으로 합니다. REST는 일반적으로 JSON 데이터 형식을 사용합니다.

HTTP 메서드

아래는 REST 기본 아키텍처의 네 가지 메서드입니다:

  • GET - 데이터 가져오기에 사용됩니다.

  • PUT - 데이터 업데이트나 추가에 사용됩니다.

  • DELETE - 데이터 제거에 사용됩니다.

  • POST - 데이터 추가에 사용됩니다.

RESTful 웹 서비스

웹 서비스는 플랫폼 독립적이고 저결합적이며, 자기 포함적인, 프로그래밍 웹 애플리케이션을 기반으로 한 것으로, 개방형 XML(표준 일반 마크업 언어의 일부) 표준을 사용하여 이러한 애플리케이션을 설명,发布, 발견, 조정 및 구성할 수 있습니다. 이들은 분산형 상호작용 애플리케이션 개발에 사용됩니다.

REST 아키텍처 기반의 웹 서비스는 RESTful입니다.

가벼운 성질과 HTTP를 통해 직접 데이터를 전송하는 특성으로 인해, 웹 서비스의 RESTful 방법은 가장 일반적인 대체 방법이 되었습니다. 클라이언트는 다양한 언어(예: Java 프로그램, Perl, Ruby, Python, PHP 및 Javascript[Ajax 포함])로 구현할 수 있습니다.

RESTful 웹 서비스는 자동 클라이언트나 사용자를 대신하는 애플리케이션을 통해 접근할 수 있습니다. 그러나 이 서비스의 간편성은 사용자가 직접 인터랙션할 수 있게 하여, 웹 브라우저를 사용하여 GET URL을 구성하고 반환된 내용을 읽을 수 있습니다.

RESTful 생성

먼저, users.json 데이터 자원 파일을 생성합니다. 내용은 다음과 같습니다:

{
   "user1" : {
      "name" : "Sea",
      "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를 생성합니다:

순번URIHTTP 메서드내용 전송결과
1listUsersGET공백모든 사용자 목록 표시
2addUserPOSTJSON 문자열새로운 사용자 추가
3deleteUserDELETEJSON 문자열사용자 삭제
4:idGET공백사용자 상세 정보 표시

사용자 목록 가져오기:

다음 코드에서는 RESTful API를 생성했습니다 listUsers사용자 정보 목록을 읽기 위해 사용됩니다, 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("응용 프로그램 예제, 접근 주소는 http:으로 합니다:",//%s:%s", host, port)
}

다음 명령어를 실행합니다:

$ node server.js 
응용 프로그램 예제, 접근 주소는 http:으로 합니다://0.0.0.0:8081

브라우저에서 http:에 접근하세요://127.0.0.1:8081/listUsers 결과를 다음과 같이 표시합니다:

{
   "user1" : {
      "name" : "Sea",
      "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를 생성했습니다 addUser새로운 사용자 데이터를 추가하기 위해 사용됩니다,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.get('/addUser', function (req, res) {
   // 존재하는 데이터를 읽습니다
   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("응용 프로그램 예제, 접근 주소는 http:으로 합니다:",//%s:%s", host, port)
}

다음 명령어를 실행합니다:

$ node server.js 
응용 프로그램 예제, 접근 주소는 http:으로 합니다://0.0.0.0:8081

브라우저에서 http:에 접근하세요://127.0.0.1:8081/addUser 결과를 다음과 같이 표시합니다:

{ user1:
   { name: 'Sea',
     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 } 
}

사용자 상세 정보 표시

다음 코드에서는 RESTful API를 생성했습니다 :id(사용자 ID)사용자 정보를 읽기 위해 사용됩니다,server.js 파일 코드는 다음과 같습니다:

var express = require('express');
var app = express();
var fs = require("fs");
app.get('/:id', function (req, res) {
   // 존재하는 사용자를 읽는다
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       var user = data["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("응용 프로그램 예제, 접근 주소는 http:으로 합니다:",//%s:%s", host, port)
}

다음 명령어를 실행합니다:

$ node server.js 
응용 프로그램 예제, 접근 주소는 http:으로 합니다://0.0.0.0:8081

브라우저에서 http:에 접근하세요://127.0.0.1:8081/2결과를 다음과 같이 표시합니다:

{
   "name":"suresh",
   "password":"password2",
   "profession":"librarian",
   "id":2
}

사용자 삭제

다음 코드에서는 RESTful API를 생성했습니다 deleteUser서버.js 파일 코드는 다음과 같습니다: 2서버.js 파일 코드는 다음과 같습니다:

var express = require('express');
var app = express();
var fs = require("fs");
var id = 2;
app.get('/deleteUser, function(req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       delete data["user" + id];
       
       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("응용 프로그램 예제, 접근 주소는 http:으로 합니다:",//%s:%s", host, port)
}

다음 명령어를 실행합니다:

$ node server.js 
응용 프로그램 예제, 접근 주소는 http:으로 합니다://0.0.0.0:8081

브라우저에서 http:에 접근하세요://127.0.0.1:8081/deleteUser, 결과를 다음과 같이 보여줍니다:

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