클럽 행사를 관리할 플랫폼이 필요하신 적이 있나요? 아니면 사무실에서 회의를 계획하시나요? 하지만 저렴한 플랫폼을 찾다가 제시된 수많은 옵션에서 길을 잃으셨나요? 아니면 인생을 더 잘 정리하고 어떤 행사에 참석해야 하는지 일정을 계획하고 싶으신가요?
이 게시물을 끝까지 따라오시면 이벤트 생성 및 등록과 같은 모든 기본 기능을 사용할 수 있는 기본 이벤트 예약 API가 제공됩니다.
이 프로젝트의 GitHub 저장소는 https://github.com/xerctia/gatherly에 있습니다
Express는 GET, POST 등과 같은 다양한 종류의 요청을 처리하기 위해 서버를 설정하고 구축하기 위한 Javascript 프레임워크입니다. Express는 가장 널리 사용되는 백엔드 프레임워크 중 하나이며 초보자가 시작하기 가장 쉬운 프레임워크 중 하나이기도 합니다. . 이 블로그에서는 서버를 만들고 필요한 엔드포인트를 설정하기 위해 Express를 사용할 것입니다.
PostgreSQL은 신뢰성, 확장성 및 복잡한 쿼리 지원으로 잘 알려진 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. JSON 데이터 지원, 전체 텍스트 검색, 확장성과 같은 고급 기능을 제공하므로 소규모 프로젝트와 대규모 애플리케이션 모두에 다용도로 사용할 수 있습니다. PostgreSQL은 개발자들 사이에서 인기가 높으며 강력한 성능으로 높이 평가됩니다.
웹에는 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이 지난 이벤트가 자동으로 삭제되도록 크론 작업을 추가하는 등의 기능을 더 추가할 수 있습니다.
이 게시물이 마음에 드셨다면 좋아요를 눌러주시고 궁금한 점이 있거나 관련 채팅을 하고 싶으시면 댓글을 남겨주세요. LinkedIn에서도 저를 팔로우하세요: https://www.linkedin.com/in/amartya-chowdhury/
위 내용은 Express 및 Supabase를 사용하여 나만의 Event Scheduling API 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!