Maison >interface Web >js tutoriel >Créez votre propre API de planification d'événements à l'aide d'Express et Supabase
Avez-vous déjà eu besoin d'une plateforme pour gérer les événements de votre club ? Ou peut-être planifier des réunions dans votre bureau ? Mais à la recherche de plateformes abordables, vous vous perdez dans les nombreuses options qui s’offrent à vous ? Ou peut-être souhaitez-vous simplement mieux organiser votre vie et planifier quand vous devez assister à quels événements ?
Suivez cet article jusqu'à la fin et vous obtiendrez une API de planification d'événements de base où toutes les fonctionnalités de base telles que la création et l'inscription d'événements seront disponibles.
Le référentiel GitHub de ce projet se trouve sur https://github.com/xerctia/gatherly
Express est un framework Javascript permettant de configurer et de construire des serveurs pour gérer différents types de requêtes telles que GET, POST, etc. Express est l'un des frameworks backend les plus utilisés, et est également l'un des frameworks les plus simples pour les débutants. . Dans ce blog, nous utiliserons Express pour créer notre serveur et configurer les points de terminaison requis.
PostgreSQL est un système de gestion de bases de données relationnelles (SGBDR) open source, connu pour sa fiabilité, son évolutivité et sa prise en charge des requêtes complexes. Il offre des fonctionnalités avancées telles que la prise en charge des données JSON, la recherche en texte intégral et l'extensibilité, ce qui le rend polyvalent aussi bien pour les petits projets que pour les applications à grande échelle. PostgreSQL est populaire parmi les développeurs et est apprécié pour ses performances robustes.
Il existe de nombreux fournisseurs PostgreSQL disponibles sur le Web qui permettent l'utilisation d'une base de données PostgreSQL, certains gratuitement et d'autres avec un forfait payant. Dans ce projet, nous utiliserons Supabase et sa base de données comme 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}`); })
Félicitations ! Vous avez configuré avec succès un serveur de base dans 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;
Félicitations, vous avez réussi à connecter votre base de données Supabase à votre fichier index.js. Nous sommes maintenant prêts à commencer à créer les véritables points de terminaison de l'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 } })
Cela peut également être fait en dehors du try-catch, tout comme les valeurs d'entrée dans le point de terminaison précédent.
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"
Pour implémenter cette fonctionnalité, vous devrez d'abord créer une nouvelle table dans Supabase.
Allez dans l'éditeur SQL et exécutez la requête suivante :
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");
Celui-ci est un devoir pour vous les gars. (Ne soyez pas en colère, si vous n'y parvenez pas même après avoir essayé, le code GitHub est toujours disponible)
Un indice : vous pouvez vérifier si l'événement existe de la même manière que nous l'avons fait dans POST /event/:id/register. Après cela, vous devez écrire une requête SELECT pour la table d'inscriptions afin de récupérer toutes les lignes avec l'identifiant d'événement donné.
De même, vous pouvez également essayer de créer un point de terminaison pour supprimer un événement particulier, comme DELETE /event/:id .
Félicitations ! Vous avez créé avec succès votre propre API pour planifier des événements et gérer les inscriptions des utilisateurs. Vous avez parcouru un long chemin.
Vous pouvez ajouter plus de fonctionnalités, comme l'ajout d'une tâche cron afin que les événements dont l'heure de fin est passée soient automatiquement supprimés.
Si vous avez aimé cet article, lâchez un like et commentez si vous avez des doutes ou si vous souhaitez simplement discuter à ce sujet. Suivez-moi également sur LinkedIn : https://www.linkedin.com/in/amartya-chowdhury/
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!