Benötigten Sie jemals eine Plattform, um die Veranstaltungen Ihres Clubs zu verwalten? Oder vielleicht Besprechungen in Ihrem Büro vereinbaren? Doch auf der Suche nach bezahlbaren Plattformen verlierst du dich in den zahlreichen Möglichkeiten, die dir geboten werden? Oder vielleicht möchten Sie einfach Ihr Leben besser organisieren und planen, wann Sie an welchen Veranstaltungen teilnehmen müssen?
Folgen Sie diesem Beitrag bis zum Ende, und Sie erhalten eine grundlegende API zur Veranstaltungsplanung, in der alle grundlegenden Funktionen wie Veranstaltungserstellung und -registrierung verfügbar sind.
Das GitHub-Repository für dieses Projekt befindet sich unter https://github.com/xerctia/gatherly
Express ist ein Javascript-Framework zum Einrichten und Erstellen von Servern zur Verarbeitung verschiedener Arten von Anfragen wie GET, POST usw. Express ist eines der am häufigsten verwendeten Backend-Frameworks und auch eines der einfachsten Frameworks für Anfänger . In diesem Blog verwenden wir Express für die Erstellung unseres Servers und die Einrichtung der erforderlichen Endpunkte.
PostgreSQL ist ein relationales Open-Source-Datenbankverwaltungssystem (RDBMS), das für seine Zuverlässigkeit, Skalierbarkeit und Unterstützung komplexer Abfragen bekannt ist. Es bietet erweiterte Funktionen wie Unterstützung für JSON-Daten, Volltextsuche und Erweiterbarkeit, wodurch es sowohl für kleine Projekte als auch für große Anwendungen vielseitig einsetzbar ist. PostgreSQL ist bei Entwicklern beliebt und wird für seine robuste Leistung geschätzt.
Es gibt viele PostgreSQL-Anbieter im Internet, die die Nutzung einer PostgreSQL-Datenbank ermöglichen, einige kostenlos und andere mit einem kostenpflichtigen Plan. In diesem Projekt werden wir Supabase und seine Datenbank als unser PostgreSQL verwenden.
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}`); })
Herzlichen Glückwunsch! Sie haben erfolgreich einen Basisserver in Express eingerichtet!
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;
Herzlichen Glückwunsch, Sie haben Ihre Supabase-Datenbank erfolgreich mit Ihrer index.js-Datei verbunden. Wir sind jetzt bereit, mit dem Aufbau der eigentlichen API-Endpunkte zu beginnen.
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 } })
Dies kann auch außerhalb des Try-Catch erfolgen, genau wie die Eingabewerte im vorherigen Endpunkt.
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"
Um diese Funktion zu implementieren, müssen Sie zunächst eine neue Tabelle in Supabase erstellen.
Gehen Sie zum SQL-Editor und führen Sie die folgende Abfrage aus:
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");
Das ist eine Hausaufgabe für euch. (Seien Sie nicht böse, wenn Sie es auch nach dem Versuch nicht schaffen, ist der GitHub-Code immer verfügbar)
Ein Hinweis: Sie können auf die gleiche Weise überprüfen, ob das Ereignis existiert, wie wir es in POST /event/:id/register getan haben. Danach müssen Sie eine SELECT-Abfrage für die Registrierungstabelle schreiben, um alle Zeilen mit der angegebenen event_id abzurufen.
Ähnlich können Sie auch versuchen, einen Endpunkt zum Löschen eines bestimmten Ereignisses zu erstellen, wie z. B. DELETE /event/:id .
Herzlichen Glückwunsch! Sie haben erfolgreich Ihre eigene API zum Planen von Ereignissen und zum Verwalten von Benutzerregistrierungen erstellt. Du hast einen langen Weg zurückgelegt.
Sie können weitere Funktionen hinzufügen, z. B. das Hinzufügen eines Cron-Jobs, damit Ereignisse, deren Endzeit abgelaufen ist, automatisch gelöscht werden.
Wenn Ihnen dieser Beitrag gefallen hat, hinterlassen Sie ein „Gefällt mir“ und kommentieren Sie, wenn Sie Zweifel haben oder einfach nur darüber chatten möchten. Folgen Sie mir auch auf LinkedIn: https://www.linkedin.com/in/amartya-chowdhury/
Das obige ist der detaillierte Inhalt vonErstellen Sie Ihre eigene Event Scheduling API mit Express und Supabase. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!