English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
REST(Representational State Transfer)은 Roy Fielding 박사가2000년에 그의 박사 학위 논문에서 제안된 한 소프트웨어 아키텍처 스타일입니다.
표현적 상태 전환(Representational State Transfer, REST)은 일련의 아키텍처 제약 조건과 원칙으로 구성된 집합입니다. 이 제약 조건과 원칙을 만족하는 애플리케이션 또는 설계는 RESTful입니다. 주의해야 할 것은 REST는 표준이 아니라 설계 스타일이라는 점입니다. REST는 일반적으로 HTTP, URI, XML(표준 일반 마크업 언어의 일부) 및 HTML(표준 일반 마크업 언어의 일부)와 같은 널리 사용되는 프로토콜과 표준을 기반으로 합니다. REST는 일반적으로 JSON 데이터 형식을 사용합니다.
아래는 REST 기본 아키텍처의 네 가지 메서드입니다:
GET - 데이터 가져오기에 사용됩니다.
PUT - 데이터 업데이트나 추가에 사용됩니다.
DELETE - 데이터 제거에 사용됩니다.
POST - 데이터 추가에 사용됩니다.
웹 서비스는 플랫폼 독립적이고 저결합적이며, 자기 포함적인, 프로그래밍 웹 애플리케이션을 기반으로 한 것으로, 개방형 XML(표준 일반 마크업 언어의 일부) 표준을 사용하여 이러한 애플리케이션을 설명,发布, 발견, 조정 및 구성할 수 있습니다. 이들은 분산형 상호작용 애플리케이션 개발에 사용됩니다.
REST 아키텍처 기반의 웹 서비스는 RESTful입니다.
가벼운 성질과 HTTP를 통해 직접 데이터를 전송하는 특성으로 인해, 웹 서비스의 RESTful 방법은 가장 일반적인 대체 방법이 되었습니다. 클라이언트는 다양한 언어(예: Java 프로그램, Perl, Ruby, Python, PHP 및 Javascript[Ajax 포함])로 구현할 수 있습니다.
RESTful 웹 서비스는 자동 클라이언트나 사용자를 대신하는 애플리케이션을 통해 접근할 수 있습니다. 그러나 이 서비스의 간편성은 사용자가 직접 인터랙션할 수 있게 하여, 웹 브라우저를 사용하여 GET URL을 구성하고 반환된 내용을 읽을 수 있습니다.
먼저, 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를 생성합니다:
순번 | URI | HTTP 메서드 | 내용 전송 | 결과 |
---|---|---|---|---|
1 | listUsers | GET | 공백 | 모든 사용자 목록 표시 |
2 | addUser | POST | JSON 문자열 | 새로운 사용자 추가 |
3 | deleteUser | DELETE | JSON 문자열 | 사용자 삭제 |
4 | :id | GET | 공백 | 사용자 상세 정보 표시 |
다음 코드에서는 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 } }