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、略称REST)は、Roy Fielding博士が2000年の博士論文で提案されたソフトウェアアーキテクチャスタイルです。

表現型状態転移は、一連のアーキテクチャ制約と原則のセットです。これらの制約と原則を満たすアプリケーションや設計は RESTful です。RESTは設計スタイルであり、標準ではありません。RESTは通常、HTTP、URI、XML(標準通用マークアップ言語の一部)およびHTML(標準通用マークアップ言語の一部)などの広く普及しているプロトコルと標準に基づいています。RESTは通常、JSONデータ形式を使用します。

HTTP メソッド

以下は REST 基本アーキテクチャの 4つのメソッドです:

  • GET - データを取得するために使用されます。

  • PUT - データを更新または追加するために使用されます。

  • DELETE - データを削除するために使用されます。

  • POST - データを追加するために使用されます。

RESTful Web サービス

Web サービスはプラットフォームに依存せず、低い結合度を持ち、自包含のプログラムで、可編集な Web アプリケーションです。これらのアプリケーションを記述、公開、検出、調整、構成するためにオープンな XML(標準通用マークアップ言語の一部)を使用して、分布型の互換性のあるアプリケーションの開発に使用されます。

RESTアーキテクチャに基づく Web サービスは RESTful です。

軽量であり、HTTPを通じてデータを直接転送する特性を持つため、Web サービスの RESTful メソッドは最も一般的な代替方法となりました。Java プログラム、Perl、Ruby、Python、PHP、Javascript(Ajaxを含む)などのさまざまな言語でクライアントを実現できます。

RESTful Web サービスは通常、自動クライアントやユーザーを代表するアプリケーションを通じてアクセスできます。しかし、このサービスの便利さはユーザーが直接対話できるようにし、Web ブラウザを使用して GET URL を構築し、返される内容を読み取ることができます。

RESTful を作成

まず、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 を作成します:

番号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("アプリケーション例,アクセス先の 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 } 
}