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のページにアクセスしてください。



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

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

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

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、