Node.js-RESTful API

RESTアーキテクチャとは何ですか?

RESTは、REpresentational StateTransferの略です。RESTはWeb標準ベースのアーキテクチャであり、HTTPプロトコルを使用します。これは、すべてのコンポーネントがリソースであり、HTTP標準メソッドを使用して共通のインターフェースによってリソースにアクセスされるリソースを中心に展開されます。RESTは、2000年にロイフィールディングによって最初に導入されました。

RESTサーバーは、リソースへのアクセスとRESTクライアントアクセスを提供し、HTTPプロトコルを使用してリソースを変更するだけです。ここで、各リソースはURI /グローバルIDによって識別されます。RESTは、テキスト、JSON、XMLなどのリソースを表すためにさまざまな表現を使用しますが、JSONが最も一般的なものです。

HTTPメソッド

以下の4つのHTTPメソッドは、RESTベースのアーキテクチャで一般的に使用されます。

  • GET −これは、リソースへの読み取り専用アクセスを提供するために使用されます。

  • PUT −これは新しいリソースを作成するために使用されます。

  • DELETE −これはリソースを削除するために使用されます。

  • POST −これは、既存のリソースを更新したり、新しいリソースを作成したりするために使用されます。

RESTfulWebサービス

Webサービスは、アプリケーションまたはシステム間でデータを交換するために使用されるオープンなプロトコルと標準のコレクションです。さまざまなプログラミング言語で記述され、さまざまなプラットフォームで実行されるソフトウェアアプリケーションは、Webサービスを使用して、単一のコンピューターでのプロセス間通信と同様の方法で、インターネットなどのコンピューターネットワークを介してデータを交換できます。この相互運用性(たとえば、JavaとPythonの間、またはWindowsとLinuxアプリケーション間の通信)は、オープンスタンダードの使用によるものです。

RESTアーキテクチャに基づくWebサービスは、RESTfulWebサービスとして知られています。これらのWebサービスは、HTTPメソッドを使用してRESTアーキテクチャの概念を実装します。RESTful Webサービスは通常、URI、Uniform Resource Identifierサービスを定義し、JSONやHTTPメソッドのセットなどのリソース表現を提供します。

ライブラリ用の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
   }
}

この情報に基づいて、次のRESTfulAPIを提供します。

シニア番号 URI HTTPメソッド POST本文 結果
1 listUsers 取得する 空の すべてのユーザーのリストを表示します。
2 ユーザーを追加する 役職 JSON文字列 新しいユーザーの詳細を追加します。
3 deleteUser 削除 JSON文字列 既存のユーザーを削除します。
4 :id 取得する 空の ユーザーの詳細を表示します。

Ajaxまたは単純なフォームデータを使用してフロントエンドから値を渡す方法と、expressを使用してそれらを処理する方法をすでに知っていることを前提として、すべての例のほとんどの部分をハードコーディングの形式で保持しています Request オブジェクト。

ユーザーの一覧表示

最初のRESTfulAPIを実装しましょう listUsers server.jsファイルで次のコードを使用する-

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("Example app listening at http://%s:%s", host, port)
})

次に、URL:http://127.0.0.1:8081 / listUsersおよびHTTPメソッド:任意のRESTクライアントを使用してローカルマシンでGETを使用して、定義されたAPIにアクセスしてみます。これにより、次の結果が得られます-

ソリューションを実稼働環境に配置するときに、指定されたIPアドレスを変更できます。

{
   "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
   }
}

ユーザーを追加する

次のAPIは、リストに新しいユーザーを追加する方法を示しています。以下は、新しいユーザーの詳細です-

user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

Ajax呼び出しを使用してJSONの形式で同じ入力を受け入れることができますが、教育の観点から、ここではハードコーディングしています。以下はaddUser データベース内の新しいユーザーへのAPI-

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.post('/addUser', function (req, res) {
   // First read existing users.
   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("Example app listening at http://%s:%s", host, port)
})

次に、URL:http://127.0.0.1:8081 / addUserおよびHTTPメソッド:任意のRESTクライアントを使用してローカルマシンでPOSTを使用して定義済みAPIにアクセスしてみます。これにより、次の結果が得られます-

{
   "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}
}

詳細を表示

次に、ユーザーIDを使用して呼び出されるAPIを実装し、対応するユーザーの詳細を表示します。

server.js

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/:id', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      var users = JSON.parse( data );
      var user = users["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("Example app listening at http://%s:%s", host, port)
})

次に、URL:http://127.0.0.1:8081/2およびHTTPメソッド:任意のRESTクライアントを使用してローカルマシンでGETを使用して定義済みAPIにアクセスしてみます。これにより、次の結果が得られます-

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

ユーザーの削除

このAPIは、req.bodyを介して入力データを受信し、ユーザーIDに基づいてそのユーザーをデータベースから削除するaddUserAPIと非常によく似ています。プログラムを単純にするために、ID2のユーザーを削除するとします。

server.js

var express = require('express');
var app = express();
var fs = require("fs");

var id = 2;

app.delete('/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("Example app listening at http://%s:%s", host, port)
})

次に、URL:http://127.0.0.1:8081 / deleteUserおよびHTTPメソッド:任意のRESTクライアントを使用するローカルマシンでのDELETEを使用して、定義されたAPIにアクセスしてみます。これにより、次の結果が得られます-

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