Hapi.jsプロジェクトの作成と実行
Hapi.jsとは?
Hapi.jsは、アプリケーションやサービスを構築するための強力で柔軟なNode.jsフレームワークです。Walmart Labsによって作成され、そのプラグインシステムと豊富な機能で知られています。Hapi.jsは、HTTPリクエストとレスポンスを処理するための簡潔な方法を提供するため、開発者が高性能なWebアプリやAPIを効率的に構築できるようにします。
Hapi.jsの主な特徴と利点
- プラグインシステム:Hapi.jsには強力なプラグインシステムがあり、コードの拡張と再利用が容易です。
- ルーティングシステム:柔軟で強力なルーティングの定義と処理機能を提供します。
- 入力検証:強力な入力検証機能が組み込まれており、データの完全性と安全性を確保します。
- 豊富なエコシステム:豊富なプラグインとコミュニティサポートがあり、さまざまな一般的な機能要件をカバーしています。
- 安全性:クロスサイトリクエストフォージェリ(CSRF)やクロスサイトスクリプティング(XSS)攻撃を防止するためのさまざまなセキュリティ機能が組み込まれています。
Hapi.jsを使用すると、開発者は高性能で安全なWebアプリやAPIを迅速に構築できます。
ServBayを使用してHapi.jsプロジェクトを作成および実行する
この記事では、ServBayが提供するNode.js環境を使用してHapi.jsプロジェクトを作成および実行する方法を説明します。ServBayの「ホスティング」機能を使用してWebサーバーを設定し、リバースプロキシを通じてプロジェクトにアクセスします。
Hapi.jsプロジェクトの作成
プロジェクトの初期化
まず、ServBayが提供するNode.js環境をインストールしていることを確認してください。次に、ServBayの推奨Webサイトのルートディレクトリである
/Applications/ServBay/www
に新しいHapi.jsプロジェクトを作成します:bashcd /Applications/ServBay/www mkdir servbay-hapi-app cd servbay-hapi-app npm init -y npm install @hapi/hapi
1
2
3
4
5アプリケーションファイルの作成
プロジェクトのルートディレクトリに
server.js
ファイルを作成し、以下のコードを追加します:javascriptconst Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: process.env.PORT || 3000, host: 'localhost' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello ServBay!'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { console.log(err); process.exit(1); }); init();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
開発モードに移行
開発サーバーの実行
開発サーバーを起動し、ポートを指定します(例:8585):
bashPORT=8585 node server.js
1これにより、ローカルで開発サーバーが起動し、ポート8585が公開されます。
ServBayホスティングのリバースプロキシの設定
ServBayの「ホスティング」機能を使用して、リバースプロキシを通じて開発サーバーにアクセスします。ServBayの「ホスティング」設定で、新しいリバースプロキシを追加します:
- 名前:
My first Hapi.js dev site
- ドメイン:
servbay-hapi-test.dev
- ホスティングタイプ:
リバースプロキシ
- IP:
127.0.0.1
- ポート:
8585
詳細な設定手順については、Nodejs開発サイトの追加方法を参照してください。
- 名前:
開発モードにアクセス
ブラウザを開いて、
https://servbay-hapi-test.dev
にアクセスし、プロジェクトをリアルタイムで確認します。ServBayはカスタムドメインおよび無料のSSL証明書をサポートしているため、より高いセキュリティを享受できます。
本番環境へのデプロイ
本番環境の準備
プロジェクトが本番環境で正常に動作することを確認します。通常、Hapi.jsプロジェクトには特別なビルドステップは必要ありませんが、環境変数の設定やその他の設定が必要な場合があります。
本番サーバーの実行
本番サーバーを起動し、ポートを指定します(例:8586):
bashPORT=8586 NODE_ENV=production node server.js
1ServBayホスティングのリバースプロキシの設定
ServBayの「ホスティング」機能を使用して、本番サーバーにリバースプロキシを設定します。ServBayの「ホスティング」設定で、新しいリバースプロキシを追加します:
- 名前:
My first Hapi.js production site
- ドメイン:
servbay-hapi-test.prod
- ホスティングタイプ:
リバースプロキシ
- IP:
127.0.0.1
- ポート:
8586
- 名前:
本番モードにアクセス
ブラウザを開いて、
https://servbay-hapi-test.prod
にアクセスし、本番バージョンを確認します。ServBayのカスタムドメインと無料のSSL証明書のおかげで、あなたのWebサイトはより高いセキュリティと信頼性を持つようになります。
データベース接続
ServBayはRedis、MariaDB、PostgreSQL、MongoDBデータベースをサポートしています。以下は、これらのデータベースに接続する方法の例です。
MongoDBに接続
@hapi/nes
およびmongoose
をインストール:bashnpm install mongoose
1その後、プロジェクトに取り込み、接続します:
javascriptconst mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/servbay-hapi-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('MongoDB connected')) .catch(err => console.log(err));
1
2
3
4
5Redisに接続
redis
をインストール:bashnpm install redis
1その後、プロジェクトに取り込み、接続します:
javascriptconst redis = require('redis'); const client = redis.createClient(); client.on('error', function (err) { console.log('Error ' + err); }); client.on('connect', function () { console.log('Redis client connected'); });
1
2
3
4
5
6
7
8
9
10MariaDBに接続
mariadb
をインストール:bashnpm install mariadb
1その後、プロジェクトに取り込み、接続します:
javascriptconst mariadb = require('mariadb'); const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_hapi_app' }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); //release to pool }) .catch(err => { console.log("Not connected due to error: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16PostgreSQLに接続
pg
をインストール:bashnpm install pg
1その後、プロジェクトに取り込み、接続します:
javascriptconst { Pool } = require('pg'); const pool = new Pool({ user: 'user', host: 'localhost', database: 'servbay_hapi_app', password: 'password', port: 5432, }); pool.connect((err, client, done) => { if (err) throw err; console.log('Connected to PostgreSQL'); done(); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
これまでの手順を通じて、Hapi.jsプロジェクトを作成および実行し、ServBayが提供する機能を使用してプロジェクトを管理およびアクセスし、さまざまなデータベースに接続することができました。