ホームページ > 記事 > ウェブフロントエンド > Express と Supabase を使用して独自のイベント スケジューリング API を作成する
クラブのイベントを管理するためのプラットフォームが必要になったことはありませんか?あるいは、オフィスで会議をスケジュールすることもできますか?しかし、手頃な価格のプラットフォームを探していると、提示される多数のオプションの中で迷ってしまいますか?それとも、生活をよりよく整理して、どのイベントにいつ参加するかをスケジュールしたいだけですか?
この投稿を最後まで実行すると、イベントの作成や登録などのすべての基本機能が利用できる基本的なイベント スケジュール API が完成します。
このプロジェクトの GitHub リポジトリは https://github.com/xerctia/gatherly にあります
Express は、GET、POST などのさまざまな種類のリクエストを処理するサーバーをセットアップおよび構築するための Javascript フレームワークです。Express は、最もよく使用されているバックエンド フレームワークの 1 つであり、初心者にとって最も簡単に始めることができるフレームワークの 1 つでもあります。 。このブログでは、Express を使用してサーバーを作成し、必要なエンドポイントを設定します。
PostgreSQL は、信頼性、拡張性、複雑なクエリのサポートで知られるオープンソースのリレーショナル データベース管理システム (RDBMS) です。 JSON データのサポート、全文検索、拡張性などの高度な機能を提供し、小規模プロジェクトと大規模アプリケーションの両方に多用途に使用できます。 PostgreSQL は開発者の間で人気があり、その堅牢なパフォーマンスが高く評価されています。
Web 上には、PostgreSQL データベースの使用を可能にする多数の PostgreSQL プロバイダーがあり、無料のものと有料プランのあるものがあります。このプロジェクトでは、Supabase とそのデータベースを PostgreSQL として使用します。
const exp = require('express'); const cors = require('cors'); const app = exp(); const PORT = 3000 || process.env.PORT; app.use(express.json()); app.use(express.urlencoded({extended: true})); app.use(cors()); app.get("/", (req, res) => { res.send("Hello, Gatherly!"); }) app.listen(PORT, () => { console.log(`server started on ${PORT}`); })
おめでとうございます! Express で基本的なサーバーが正常にセットアップされました!
const exp = require('express'); const cors = require('cors'); const app = exp(); const PORT = 3000 || process.env.PORT; app.use(express.json()); app.use(express.urlencoded({extended: true})); app.use(cors()); app.get("/", (req, res) => { res.send("Hello, Gatherly!"); }) app.listen(PORT, () => { console.log(`server started on ${PORT}`); })
CREATE TABLE events ( id SERIAL PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, start_time TIMESTAMP NOT NULL, end_time TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
DATABASE_URL="postgresql://username:password@host:port/dbname"
const { Pool } = require('pg'); require('dotenv').config(); const pool = new Pool({ connectionString: process.env.DATABASE_URL, ssl: { rejectUnauthorized: false } }); module.exports = pool;
おめでとうございます。Supabase データベースが Index.js ファイルに正常に接続されました。これで、実際の API エンドポイントの構築を開始する準備が整いました。
const exp = require('express'); const cors = require('cors'); const app = exp(); const PORT = 3000 || process.env.PORT; app.use(express.json()); app.use(express.urlencoded({extended: true})); app.use(cors()); app.get("/", (req, res) => { res.send("Hello, Gatherly!"); }) app.listen(PORT, () => { console.log(`server started on ${PORT}`); })
CREATE TABLE events ( id SERIAL PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, start_time TIMESTAMP NOT NULL, end_time TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
DATABASE_URL="postgresql://username:password@host:port/dbname"
const { Pool } = require('pg'); require('dotenv').config(); const pool = new Pool({ connectionString: process.env.DATABASE_URL, ssl: { rejectUnauthorized: false } }); module.exports = pool;
const pool = require('./db');
app.get('/events', async (req, res) => { // code to be written })
try { // code to be written } catch (e) { console.error(e); res.status(500).json({error: "Database error."}); // 500 = Internal Server Error }
const result = await pool.query("SELECT * FROM events");
res.status(200).json(result.rows); // 200 = OK
app.get('/events', async (req, res) => { try { // Getting all events const result = await pool.query("SELECT * FROM events"); res.status(200).json(result.rows); // 200 = OK } catch (e) { console.error(e); res.status(500).json({error: 'Database error'}); // 500 = Internal Server Error } })
app.post("/events", async (req, res) => { try { // code to be written } catch (e) { console.error(e); res.status(500).json({error: "Failed to create event."}); // 500 = Internal Server Error } })
これは、前のエンドポイントの入力値と同様に、try-catch の外部でも実行できます。
const exp = require('express'); const cors = require('cors'); const app = exp(); const PORT = 3000 || process.env.PORT; app.use(express.json()); app.use(express.urlencoded({extended: true})); app.use(cors()); app.get("/", (req, res) => { res.send("Hello, Gatherly!"); }) app.listen(PORT, () => { console.log(`server started on ${PORT}`); })
CREATE TABLE events ( id SERIAL PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, start_time TIMESTAMP NOT NULL, end_time TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
DATABASE_URL="postgresql://username:password@host:port/dbname"
この機能を実装するには、まず Supabase に新しいテーブルを作成する必要があります。
SQL エディターに移動し、次のクエリを実行します。
const { Pool } = require('pg'); require('dotenv').config(); const pool = new Pool({ connectionString: process.env.DATABASE_URL, ssl: { rejectUnauthorized: false } }); module.exports = pool;
const pool = require('./db');
app.get('/events', async (req, res) => { // code to be written })
try { // code to be written } catch (e) { console.error(e); res.status(500).json({error: "Database error."}); // 500 = Internal Server Error }
const result = await pool.query("SELECT * FROM events");
これは皆さんへの宿題です。 (試してみてもできなかった場合でも、怒らないでください。GitHub コードはいつでも利用できます)
ヒント: POST /event/:id/register で行ったのと同じ方法で、イベントが存在するかどうかを確認できます。その後、登録テーブルの SELECT クエリを作成して、指定されたevent_id を持つすべての行をフェッチする必要があります。
同様に、 DELETE /event/:id など、特定のイベントを削除するためのエンドポイントを構築してみることもできます。
おめでとうございます!イベントをスケジュールし、ユーザー登録を管理するための独自の API が正常に作成されました。あなたは長い道のりを歩んできました。
end_time が経過したイベントが自動的に削除されるように cron ジョブを追加するなど、さらに機能を追加できます。
この投稿が気に入った場合は、「いいね!」をドロップし、疑問がある場合、またはこれに関連してチャットしたい場合はコメントしてください。 LinkedIn でもフォローしてください: https://www.linkedin.com/in/amartya-chowdhury/
以上がExpress と Supabase を使用して独自のイベント スケジューリング API を作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。