English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
REST(表述型状態転移、英:Representational State Transfer、略称REST)は、Roy Fielding博士が2000年の博士論文で提案されたソフトウェアアーキテクチャスタイルです。
表現型状態転移は、一連のアーキテクチャ制約と原則のセットです。これらの制約と原則を満たすアプリケーションや設計は RESTful です。RESTは設計スタイルであり、標準ではありません。RESTは通常、HTTP、URI、XML(標準通用マークアップ言語の一部)およびHTML(標準通用マークアップ言語の一部)などの広く普及しているプロトコルと標準に基づいています。RESTは通常、JSONデータ形式を使用します。
以下は REST 基本アーキテクチャの 4つのメソッドです:
GET - データを取得するために使用されます。
PUT - データを更新または追加するために使用されます。
DELETE - データを削除するために使用されます。
POST - データを追加するために使用されます。
Web サービスはプラットフォームに依存せず、低い結合度を持ち、自包含のプログラムで、可編集な Web アプリケーションです。これらのアプリケーションを記述、公開、検出、調整、構成するためにオープンな XML(標準通用マークアップ言語の一部)を使用して、分布型の互換性のあるアプリケーションの開発に使用されます。
RESTアーキテクチャに基づく Web サービスは RESTful です。
軽量であり、HTTPを通じてデータを直接転送する特性を持つため、Web サービスの RESTful メソッドは最も一般的な代替方法となりました。Java プログラム、Perl、Ruby、Python、PHP、Javascript(Ajaxを含む)などのさまざまな言語でクライアントを実現できます。
RESTful Web サービスは通常、自動クライアントやユーザーを代表するアプリケーションを通じてアクセスできます。しかし、このサービスの便利さはユーザーが直接対話できるようにし、Web ブラウザを使用して GET URL を構築し、返される内容を読み取ることができます。
まず、users.json という JSON データリソースファイルを作成し、以下の内容にします:
{ "user"1" : { "name" : "Sea", "password" : "password1", "profession" : "teacher", "id": 1 }, "user"2" : { "name" : "suresh", "password" : "password2", "profession" : "librarian", "id": 2 }, "user"3" : { "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("アプリケーション例,アクセス先の URL は http://%s:%s", host, port) }
次に以下のコマンドを実行します:
$ node server.js アプリケーション例,アクセス先の URL は http://0.0.0.0:8081
ブラウザで http://127.0.0.1:8081/listUsers,以下の結果が得られます:
{ "user"1" : { "name" : "Sea", "password" : "password1", "profession" : "teacher", "id": 1 }, "user"2" : { "name" : "suresh", "password" : "password2", "profession" : "librarian", "id": 2 }, "user"3" : { "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 = { "user"4" : { "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["user"4"] = user["user"4"]; 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("アプリケーション例,アクセス先の URL は http://%s:%s", host, port) }
次に以下のコマンドを実行します:
$ node server.js アプリケーション例,アクセス先の URL は 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("アプリケーション例,アクセス先の URL は http://%s:%s", host, port) }
次に以下のコマンドを実行します:
$ node server.js アプリケーション例,アクセス先の URL は http://0.0.0.0:8081
ブラウザで http://127.0.0.1:8081/2、以下はその結果です:
{ "name":"suresh", "password":"password2", "profession":"librarian", "id":2 }
以下のコードでは、RESTful API を作成しました deleteUser,指定されたユーザーの詳細情報を削除するために使用されます。以下の例では、ユーザー ID が 2,server.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("アプリケーション例,アクセス先の URL は http://%s:%s", host, port) }
次に以下のコマンドを実行します:
$ node server.js アプリケーション例,アクセス先の URL は 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 } }