未来の Web 開発者の皆さん、準備をしましょう。Postgres データベースに接続するシンプルな HTML Web サイトを作成しましょう。
この例では、ミドルウェア機能として JavaScript (Node JS および Express JS) を使用します。ポートフォリオを公開したり、ブログを運営したり、Web 開発に関する期限内のミニ プロジェクトを完了したりする場合でも、Web 開発は依然として需要のあるスキルです。
シンプルな HTML ウェブサイトをゼロから構築するプロセスを詳しく見ていきます。API リクエストを処理するミドルウェアとして JavaScript を使用して、Postgres データベースを統合する方法を探ります。さらに工夫して、Bootstrap5 を使用してウェブページを設計することもできます。ただし、これについては別のブログで説明します。
Postgres がダウンロードされ、使用できる状態になっていることを確認してください。また、Express JS、Body Parser、Postgres API などの npm パッケージをインストールするために、Node JS をダウンロードしてください。Postgres のダウンロードはこちらNodeJS のダウンロードはこちら
SQL コマンドを実行するための CLI であるpsql
または、プリインストールされている pgAdmin などのグラフィカル ユーザー インターフェイスを使用して、新しい Postgres データベースを作成します。このデモでは、データベースの作成にpsql
を使用します。
psql
を開いて資格情報を入力して開始します。
webapp
というデータベースを作成し、それに接続します。 (プロジェクトには任意の名前を使用できます。)
CREATE database webapp;
\c webapp
CREATE TABLE
コマンドを使用して、このデータベースにテーブルの構築を開始します。コマンドのガイドについては、Postgres ドキュメントを使用できます。このデモでは、 Name
、 Year
、およびBranch
を格納するstudent
データベースを作成します。 (必要に応じて、さらに属性を追加します)
CREATE TABLE student (name varchar(20), semester int, branch varchar(20));
\d student
さて、INSERTコマンドを使ってダミーデータをテーブルにアップロードしてみましょう。
INSERT INTO student VALUES ('Abel', 4, 'CE'), ('John', 6, 'ME'), ('Doe', 2, 'ETC');
完了したら、ダミーデータを追加し、以下のコマンドでStudent
テーブルを表示できます。
SELECT * FROM student;
ここまでの手順を実行すると、以下のstudent
テーブルが表示されます。
以下は、シンプルな Web サイトのボイラープレート HTML コードです。
<!DOCTYPE html> <html lang='en'> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title> Student Management System </title> </head> <body> <h1> Student Management System </h1> </body> </html>
ニーズに応じてカスタム div ブロックを追加してみましょう。
... <body> <h1> Student Management System </h1> <p> Here, are the student details as below: </p> <div id='students_list'></div> ...
students_list
div ブロックは、データベースに登録されている学生のリストを表示するためのものです。Express JS を使用して Postgres からデータを取得し、ブロックに表示します。
まずCommand Prompt
またはターミナルで必要なライブラリをインストールします
npm install express body-parser pg
HTMLとPostgreSQLを接続するためのscript.js
ファイルの作成を始めましょう。まず、リクエストを処理して接続を確立するために必要なライブラリをインポートする必要があります。
// Import required modules const express = require('express'); const { Pool } = require('pg'); const path = require('path'); const bodyParser = require('body-parser');
express
、HTML ウェブアプリケーションからのリクエストを解析するためのバックエンド サービスとして機能しますpg
、接続path
を確立するための Postgres API であり、ディレクトリ パスを管理するためのユーティリティを提供しますbody-parser
、POST リクエストからデータを抽出するためのミドルウェアです(この先で詳しく説明します)。
ここで、Express アプリケーション接続を作成し、サーバーがリッスンするポートも定義しましょう。
// Connect and Create an Express Application const app = express(); const port = 3000; // By default, its 3000, you can customize
Pool
オブジェクトのインスタンスを作成して、Postgres への接続を確立します。Postgres の設定に合わせて必要な値を追加します。
// Create a Postgres Connection const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'webapp', password: 'password', // Change to your password port: 5432, // Default Port });
express.static()
ミドルウェアを介して静的ファイルを登録する機能を追加します。静的ファイルを提供するルートディレクトリを指定します。
app.use(express.static(path.join('')));
次に、アプリから送信されたHTMLリクエストを解析する必要があります。簡単に言えば、フォームやアップロードなどのユーザーからのデータを受信するために使用されるミドルウェアです。
app.use(bodyParser.urlencoded({ extended: false }));
(ユーザーからの入力を取得する予定がない場合は、上記の行を追加しないでください。次のブログで登録フォームを追加する予定なので、body-parser が必要です)
ルート URL ('/') のルート ハンドラを設定します。これにより、ルート URL に GET 要求が送信されたときに、サーバーは同じディレクトリにある "index.html" ファイルを送信して応答します。
// Setup Route handler app.get('/', (req, res) => { res.sendFile(path.join(__dirname, '', 'index.html')); });
さて、ここからが本題です。HTTP GET メソッドを使用して、「/students」URL のルート ハンドラーを設定します。このハンドラーは、Postgres データベースから学生データ (クエリから) を取得します。
// Route handler for GET student data app.get('/students', (req, res) => { const query = 'SELECT * FROM student;'; pool.query(query, (error, result) => { if (error) { console.error('Error occurred:', error); res.status(500).send('An error occurred while retrieving data from the database.'); } else { const students = result.rows; res.json(students); } }); });
(括弧がきちんと閉じられていることを確認してください)
ここで、サーバーをリッスンし、時間になるとリクエストに応答する行を指定しましょう。以下のコマンドはリッスンすると、コンソールにメッセージを記録します。
// Listening to Requests app.listen(port, () => { console.log(`Server listening on port ${port}`); });
(デバッグ目的に適しています)
完了です。script.js script.js
ついに完成しました。必要な詳細を示すために、 index.html
ファイルに変更を加えましょう。
... <div id='students_list'></div> <script> // Fetch data via requests fetch('/students') .then(response => response.json()) .then(data => { const studentList = data.map( student => `<li> About ${student.name} : ${student.branch} - ${student.semester}th Sem</li>` ).join(''); document.getElementById('students_list').innerHTML = `<ul>${studentList}</ul>`; }) .catch(error => console.error('Error occurred:', error)); </script> ...
ターミナルを開き、 index.html
とscript.js
が保存されているディレクトリに移動して、次のコマンドを実行します。
node script.js
すべてが正常に動作している場合は、「サーバーはポート3000でリッスンしています」という内容が表示されます。
次に、 http://localhost:3000/
にアクセスして、入力したデータを表示するシンプルな HTML ウェブサイトを確認します。
できました!これで完了です!
さあ、あなたの創造力と知識を活用して、これらの Web 開発の概念を探求し、さらに興味深い Web サイトを作成しましょう。
登録システムの作成方法と設計方法に関する別のブログも近日公開予定です。フォローして、引き続きご注目ください。
それまでは、コーディングを続けてください!