Nodejs-restful-api
Node.js-RESTful API
RESTアーキテクチャとは何ですか?
RESTは、REpresentational State Transferの略です。 RESTはWeb標準ベースのアーキテクチャであり、HTTPプロトコルを使用します。 すべてのコンポーネントがリソースであり、リソースがHTTP標準メソッドを使用して共通のインターフェースによってアクセスされるリソースを中心に展開します。 RESTは、2000年にRoy Fieldingによって初めて導入されました。
RESTサーバーは、リソースへのアクセスとRESTクライアントへのアクセスを提供し、HTTPプロトコルを使用してリソースを変更します。 ここで、各リソースはURI/グローバルIDによって識別されます。 RESTはさまざまな表現を使用して、テキスト、JSON、XMLなどのリソースを表しますが、JSONが最も人気があります。
HTTPメソッド
RESTベースのアーキテクチャでは、次の4つのHTTPメソッドが一般的に使用されます。
- GET -これは、リソースへの読み取り専用アクセスを提供するために使用されます。
- PUT -これは、新しいリソースを作成するために使用されます。
- DELETE -これはリソースを削除するために使用されます。
- POST -これは、既存のリソースの更新または新しいリソースの作成に使用されます。
RESTful Webサービス
Webサービスは、アプリケーション間またはシステム間でデータを交換するために使用されるオープンプロトコルおよび標準の集まりです。 様々なプログラミング言語で書かれ、様々なプラットフォーム上で実行されるソフトウェアアプリケーションは、単一のコンピュータ上のプロセス間通信と同様に、インターネットのようなコンピュータネットワークを介してデータを交換するためにウェブサービスを使用することができる。 この相互運用性(JavaとPython、またはWindowsとLinuxアプリケーション間の通信など)は、オープンスタンダードの使用によるものです。
RESTアーキテクチャに基づくWebサービスは、RESTful Webサービスとして知られています。 これらのWebサービスは、HTTPメソッドを使用してRESTアーキテクチャの概念を実装します。 通常、RESTful WebサービスはURI、Uniform Resource Identifierサービスを定義し、JSONやHTTPメソッドのセットなどのリソース表現を提供します。
ライブラリー用のRESTfulの作成
ファイル users.json に次のユーザーを持つユーザーの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を提供します。
Sr.No. | URI | HTTP Method | POST body | Result |
---|---|---|---|---|
1 | listUsers | GET | empty | Show list of all the users. |
2 | addUser | POST | JSON String | Add details of new user. |
3 | deleteUser | DELETE | JSON String | Delete an existing user. |
4 | :id | GET | empty | Show details of a user. |
Ajaxまたは単純なフォームデータを使用してフロントエンドから値を渡す方法と、Express Request オブジェクトを使用して値を処理する方法を既に知っていることを前提として、すべての例の大部分をハードコーディングの形式で保持しています。
ユーザーの一覧表示
server.jsファイルで次のコードを使用して、最初の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("Example app listening at http://%s:%s", host, port)
})
ここで、_URL:http://127.0.0.1:8081/listUsers_および_HTTPメソッドを使用して、定義済みのAPIにアクセスしてみてください。RESTクライアントを使用して、ローカルマシンでGET_を実行します。 これは、次の結果を生成する必要があります-
ソリューションを実稼働環境に配置するときに、指定した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メソッドを使用して、定義済みのAPIにアクセスしてみてください。RESTクライアントを使用して、ローカルマシンでPOST_を実行します。 これは、次の結果を生成する必要があります-
{
"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メソッドを使用して、定義済みのAPIにアクセスしてみてください。RESTクライアントを使用して、ローカルマシンでGET_を実行します。 これは、次の結果を生成する必要があります-
{"name":"suresh","password":"password2","profession":"librarian","id":2}
ユーザーを削除
このAPIは、req.bodyを介して入力データを受け取り、ユーザーIDに基づいてそのユーザーをデータベースから削除するaddUser APIと非常に似ています。 プログラムをシンプルに保つために、ID 2のユーザーを削除することを想定しています。
*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 Method:DELETE_を使用して、任意のRESTクライアントを使用してローカルマシンで定義済みのAPIにアクセスしてみてください。 これは、次の結果を生成する必要があります-
{"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3}}