Node.js RESTful API
RESTとは何ですか?
REST(英語: Representational State Transfer、以下REST)とは、ロイ・フィールディング博士が2000年に博士論文で提唱したソフトウェアアーキテクチャスタイルです。
表現状態の転送は、一連のアーキテクチャ上の制約と原則です。これらの制約と原則を満たすアプリケーションまたは設計は RESTful です。 REST は設計スタイルであり、標準ではないことに注意することが重要です。 REST は通常、HTTP、URI、XML (標準汎用マークアップ言語のサブセット) および HTML (標準汎用マークアップ言語のアプリケーション) を使用した、広く普及している既存のプロトコルと標準に基づいています。 REST は通常、JSON データ形式を使用します。
HTTP メソッド
REST 基本アーキテクチャの 4 つのメソッドは次のとおりです:GET - データを取得するために使用されます。
PUT - データを追加します。
DELETE - データを削除するために使用されます。
POST - データの更新または追加に使用されます。
RESTful Web サービス
Web サービスは、オープン XML (標準汎用マークアップ言語のサブセット) 標準を使用して以下を記述することができる、プラットフォームに依存せず、結合度が低く、自己完結型のプログラム可能な Web ベースのアプリケーションです。分散された相互運用可能なアプリケーションの開発のために、これらのアプリケーションを公開、検出、調整、および構成します。
REST アーキテクチャに基づく Web サービスは RESTful です。
Web サービスに対する RESTful アプローチは、その軽量な性質と HTTP 経由でデータを直接転送できるため、最も一般的な代替手段となっています。クライアントは、JavaScript、Perl、Ruby、Python、PHP、Javascript (Ajax を含む) などのさまざまな言語を使用して実装できます。
RESTful Web サービスは通常、ユーザーに代わって自動化されたクライアントまたはアプリケーションを通じてアクセスできます。ただし、このサービスはシンプルであるため、ユーザーは Web ブラウザを使用してサービスを直接操作し、GET URL を構築し、返されたコンテンツを読み取ることができます。
詳細については、以下を参照してください: RESTful アーキテクチャの詳細な説明
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 を作成します:
シリアル番号 | URI | HTTPメソッド | Send content | Result |
---|---|---|---|---|
1 | listUsers | GET | empty | 全ユーザーリストを表示 |
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
ブラウザーの Access http://127.0.0.1:8081/listUsers で、結果は次のようになります:
{ "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 addUser を作成しました。新しいユーザー データを追加するために使用されるサーバーの 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: '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 } }
ユーザーの詳細を表示
コードの下に、指定されたユーザーの詳細を読み取るために使用される 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) })
ブラウザで http://127.0.0.1:8081/2 にアクセスすると、結果は次のようになります。
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
ユーザーを削除
次のコードを使用して、RESTful API を作成しました
deleteUser は、指定したユーザーの詳細を削除するために使用されます。次の例では、ユーザー ID は 2 で、server.js ファイルのコードは次のとおりです: {
"name":"suresh",
"password":"password2",
"profession":"librarian",
"id":2
}
次に、次のコマンドを実行します:
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" + 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("应用实例,访问地址为 http://%s:%s", host, port) })
ブラウザで http://127.0.0.1:8081/deleteUser にアクセスすると、結果は次のようになります:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081