Ubuntu 16.04 LTSでExpress.jsを使用してNode.js RESTful APIを作成する方法

このチュートリアルでは、Ubuntu 16.04 LTSで、NGINXを使用してリバースプロキシしながらNode.jsとExpressを使用してHTTPリクエストを処理する完全なRESTful APIを設定する方法を学びます。Postmanというアプリケーションを利用しますは、非常によく知られているAPI開発ツールであり、APIをテストして、完全に機能し、適切に機能していることを確認します。Node.jsは、ChromeのV8エンジンに基づく高速なクロスプラットフォームJavaScriptフレームワークです。デスクトップアプリケーションとサーバーアプリケーションの両方で使用され、シングルスレッドのイベントループ処理で有名です。Node.js用に構築されたWebアプリケーションフレームワークであるExpress.jsにバンドルされているRESTful APIのバックエンドとしてNode.jsを使用します。Express.jsは無料でオープンなソフトウェアとしてリリースされています。Expressはサーバーサイドであり、JavaScriptで記述されており、APIを構築するために設計されているため、プロジェクトに最適です。一方、PostmanはAPI開発を念頭に置いた非常に強力なHTTPクライアントです。API開発に必要なすべてのツールを備えています。

Postmanのインストール

まず、PostmanのWebサイトにアクセスし、メインPC(サーバーではない)にPostmanをダウンロードしてインストールします。すべてのインストール手順は彼らのウェブサイトにあります。

Node.jsのインストール

まず、Node.jsをインストールして、APIの開発を開始できるようにする必要があります。公式サイトからNode.jsをダウンロードしてインストールします。

 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
 sudo apt-get install -y nodejs

さらに、モジュールのコンパイルに役立つ必要なビルドツールを取得することもできます。

sudo apt-get install build-essential

このチュートリアルでは、Node.jsのLTSバージョン(バージョン8.9.3)を使用します。

Node.jsプロジェクトの初期化

アプリケーションを含む新しいNode.jsプロジェクトを初期化する必要があります。これを行うには、新しいディレクトリを作成します。

 mkdir expressapi 

新しいディレクトリに移動します。内部に入ったらnpm init、必要なプロンプトをすべて実行して完了します。アプリケーションの「エントリポイント」に注意してください。このファイルは後で作成します。完了するpackage.jsonと、現在のディレクトリにファイルが表示されます。プロジェクトの説明として機能し、機能するために必要なすべての依存関係をリストします。

Express.jsのセットアップ

次に、Express.jsとその依存関係を構成します。

npm install express

インストールプロセスが開始されます。すべてのダウンロードが完了するまで数分かかります。

メインファイルの開始

次に、APIのメインの開始ファイルを作成します。ここで、package.jsonファイルで見た「エントリポイント」を使用します。このチュートリアルでは、デフォルトの命名規則を使用しますindex.js

touch index.js

次に、nanoテキストエディターで開きます。

nano index.js

メインファイルでは、最初にすべてのメインパッケージを呼び出し、ルートを登録します。

var express = require('express');        
var app = express();                 
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;  
const router = express.Router();
router.get('/', function(req, res) {
    res.json({ message: 'API is Online!' });   
});

app.use('/api', router);
app.listen(port);
console.log('Listening on port ' + port);

基本的にここでは、アプリを初期化し、APIの基本的なルーターを設定しています。アプリケーションのポートをに設定していることに注意してください8080。RESTful APIを構成するときにこの番号が必要になります。これで、APIをテストする準備ができました。

PostmanでAPIをテストする

プロジェクトディレクトリで、以下を実行します。

node <filename>.js

これにより、APIが開始<filename>されpackage.jsonます。は、ファイルで指定した開始ファイルです。次に、PC / MacでPostmanを開きNew、右上隅の「」ボタンをクリックして、「」をクリックしますRequest。そこに移動すると、そのGET横に「」というバーが表示されます。ここにリクエストURLを入力します。リクエストURLセクションに次のように入力して、「Send」をクリックするだけです。

`http://your-server-ip:3000/api` 

'API is online'」が表示されます。

APIルート

ルートを処理するために、Expressルーターを使用します。ルーターが何であるかがわからない場合は、基本的に、アプリケーションエンドポイントがクライアントの要求に応答する方法です。以下は、例としてセットアップするルートです。

  • /api/numbers -1-10のすべての数字を表示します。

  • /api/letters -AZからのすべての文字を表示します。

次に、最初のルートミドルウェア構造を設定します。

router.use(function(req, res, next) {
   console.log('We've got something.');
   next() //calls next middleware in the application.
});

router.route('/numbers/:number').get((req, res) => {
     res.json({result: req.params.number + 1})
});

この例では、ユーザーがGETメソッドを使用して、その単語形式を提供することにより、数値+ 1の合計を要求できる状況をセットアップします。このrouter.route()関数を使用して、結果として返送する番号をポイントします。パラメータは:、その前に「」が付いた名前が付けられます。これらのパラメータにはを介してアクセスしますreq.params

これが文字の例です。

   router.route('/letters/:letter').get((req, res) => {
     res.json({result: req.params.letter.toUpperCase()})
});

上記と同じ方法を使用しますが、大文字を大文字にして返信します。

NGINXの概要

NGINXは、Webサービス、リバースプロキシ、ストリーミングなどに使用される有名なオープンソースソフトウェアです。80Node.jsはrootアクセスなしで1024未満のポートでの接続を許可しないため、NGINXを使用してAPIをリバースプロキシし、それをポートで実行できるようにします。これは、ドメインをサーバーにリンクするときに便利です。

NGINXのセットアップ

NGINXのインストールを開始するには、ターミナルで次のコマンドを実行し、インストールが完了するのを待つ必要があります。

sudo apt-get install nginx

次に、NGINXがアプリのリバースプロキシに使用するサイトファイルを作成します。

sudo nano /etc/nginx/sites-available-api.js

ファイルに次のように入力し、CTRL+ Oで保存します。

server {
          listen 80;
          location / {
                proxy_set_header X-Real-IP 
                $remote_addr;
                proxy_set_header 
                X-Forwarded-For 
                $proxy_add_x_forwarded_for;
                proxy_set_header Host 
                $http_host;
                proxy_set_header 
                X-NginX-Proxy true; proxy_pass 
                http://127.0.0.1:8080/;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade 
                $http_upgrade;
                proxy_set_header Connection 
                "upgrade";
                proxy_redirect off;
                proxy_set_header 
               X-Forwarded-Proto $scheme;
       }
}

以前にアプリケーションを実行したときと同じポートを使用して、すべての要求をポートのIPアドレスからポートで80実行されているAPI にリダイレクトするようにNginxに指示しています8080

次に、新しく作成したファイルをsites-availableフォルダーにシンボリックリンクしてリバースプロキシを有効にします。

sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available

これにより、NGINXは確実にAPIをリバースプロキシします。

NGINXでの最初の実行

NGINXの構成が完了したら、NGINXを起動し、次にAPIを起動します。まず、NGINXを再起動します。

sudo systemctl restart nginx

次に、APIディレクトリに戻り、起動します。

node <filename>.js

アプリケーションはポートで実行されます80。Postmanで上からテストを実行するだけで、すべてが適切に機能していることを確認できます。

APIを実行し続ける

本番環境では、ノードアプリケーションのプロセスマネージャーが存在することを確認し、バックグラウンドで永久に実行され続けるようにします。このチュートリアルでは、PM2(プロセスマネージャー2)と呼ばれるプロセスマネージャーを使用します。PM2(プロセスマネージャー2)は、最小限のダウンタイムでアプリケーションを永続的に維持するNode.jsアプリケーションのプロセスマネージャーです。PM2には、停止、リロード、一時停止など、多くの便利な管理ツールが付属しています。PM2をインストールするには、次のように入力して、インストールされるまで待ちます。

sudo npm install pm2 -g

インストールしたら、プロジェクトディレクトリにいることを確認し、次のように入力するだけでアプリケーションが起動します。

pm2 start <filename>.js

PM2を使用したアプリケーションの管理

前述したように、PM2には、アプリケーションをより適切に管理するために使用できるいくつかの便利なツールがあります。

  • pm2 stop-名前が示すように、これにより、現在実行中のアプリケーションを停止し、そのプロセスを強制終了できます。アプリケーションが予期しない結果を生み出している場合は、それを停止すると便利です。

  • pm2 list-リスト機能を使用すると、PM2を介して現在実行中のすべてのアプリケーションを、名前でマッピングされた状態で表示できます。アプリケーションの稼働時間をすばやく確認する必要がある場合は、このツールを使用する必要があります。

  • pm2 restart-なんらかの理由でアプリケーションがフリーズし、それをリロードしたい場合、pm2 restartはそれを行います。アプリケーションプロセスを強制終了し、別のプロセスで再起動します。

  • pm2 monit-PM2の組み込みモニターツールを使用すると、CPU / RAM使用量など、アプリケーションの特定の詳細のグラフを、ユーザーフレンドリーなncursesスタイルのグラフで表示できます。これは、アプリケーションの負荷の視覚的な画像が必要な場合に役立ちます。

最後の発言

これで、Node.js、Expressを利用してRESTful APIを作成し、NGINXでそれをリバースプロキシするというタスクが完了しました。このチュートリアルを自由に拡張してください。新しいAPIを使用すると、認証方法の追加、データベース、ルートとエラー処理の改善など、多くの優れた機能を実行できます。「A」レコードがすでにIPアドレスに設定されているドメインがある場合、ドメインからAPIにアクセスできます。Express.jsの詳細については、http: //expressjs.comにアクセスしてください。NGINXとリバースプロキシの詳細については、http: //nginx.comにアクセスしてください。PM2の詳細については、http://pm2.keymetrics.ioのページにアクセスしてください。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。