Jak vytvořit REST API s Prisma a PostgreSQL

Úvod do problematiky

REST API, neboli Aplikační Programové Rozhraní reprezentující stav (Representational State Transfer API), představuje druh webového rozhraní, které zprostředkovává komunikaci mezi dvěma počítačovými systémy za pomocí HTTP protokolů. Tato rozhraní jsou hojně využívána při vývoji webových aplikací, mobilních aplikací a dalších softwarových řešení, které vyžadují přístup k datům uloženým na vzdáleném serveru, případně jejich modifikaci.

PostgreSQL se etabluje jako robustní a populární relační systém správy databází, známý svou spolehlivostí, možnostmi škálování a širokou škálou funkcí. Prisma je moderní a uživatelsky přívětivé ORM (Object-Relational Mapping) nástroj, který zjednodušuje komunikaci mezi aplikací a databází PostgreSQL.

Tento článek vám poskytne návod, jak vytvořit REST API s pomocí Prisma a PostgreSQL. Jako webový rámec použijeme Node.js a pro HTTP server Express.js. Předpokládá se, že čtenář má základní znalosti v oblasti Node.js, Express.js, Prismy a PostgreSQL.

Konfigurace projektu

1. Zřízení nového adresáře: Otevřete terminál nebo příkazový řádek a vytvořte nový adresář pro váš projekt API.

2. Inicializace Node.js projektu: V rámci adresáře projektu inicializujte nový Node.js projekt pomocí příkazu:

npm init -y

3. Instalace Prisma: Použijte správce balíčků npm pro instalaci Prismy do vašeho projektu:

npm install prisma --save-dev

4. Instalace Express.js: Nainstalujte Express.js, oblíbený webový rámec pro Node.js:

npm install express

5. Vytvoření konfiguračního souboru Prismy: V kořenovém adresáři projektu vytvořte nový soubor s názvem prisma.schema. Tento soubor bude obsahovat definici schématu vaší databáze PostgreSQL.

Definice schématu databáze

Schéma databáze definuje strukturu, vztahy tabulek a sloupců. V tomto návodu vytvoříme jednoduché schéma se třemi tabulkami: User, Post a Comment.

// prisma.schema

datasource db {
provider = "postgresql"
url = "postgresql://postgres:mypassword@localhost:5432/mydatabase"
}

generator client {
provider = "prisma-client-js"
}

model User {
id Int @id @default(autoincrement())
username String @unique
email String @unique
}

model Post {
id Int @id @default(autoincrement())
title String
content String
authorId Int
author User @relation(fields: [authorId], references: [id])
}

model Comment {
id Int @id @default(autoincrement())
content String
postId Int
authorId Int
post Post @relation(fields: [postId], references: [id])
author User @relation(fields: [authorId], references: [id])
}

Provedení migrace databáze

Po definování schématu databáze můžeme provést migraci, která vytvoří tabulky a sloupce v databázi PostgreSQL.

1. Spuštění terminálu: Otevřete terminál nebo příkazový řádek a přejděte do adresáře projektu.

2. Spuštění migračního příkazu Prismy: Pro vygenerování a aplikování migrací databáze použijte následující příkaz:

npx prisma migrate dev

Tento příkaz vytvoří v databázi tabulky a sloupce definované ve schématu prisma.schema.

Tvorba REST API

Po nastavení databáze můžeme začít s tvorbou REST API pomocí Express.js.

1. Vytvoření serverového souboru: Vytvořte v kořenovém adresáři projektu nový soubor s názvem server.js. Tento soubor bude obsahovat kód Express.js serveru.

2. Import potřebných modulů: Na začátek souboru server.js importujte Express.js a Prisma klienta, který byl vygenerován během migrace databáze:

const express = require('express');
const { PrismaClient } = require('@prisma/client');

const app = express();
app.use(express.json());

const prisma = new PrismaClient();

3. Definování CRUD tras: Následující kód definuje CRUD (Create, Read, Update, Delete) trasy pro model User:

// Vytvoření nového uživatele
app.post('/users', async (req, res) => {
const newUser = await prisma.user.create({
data: req.body,
});
res.status(201).json(newUser);
});

// Získání všech uživatelů
app.get('/users', async (req, res) => {
const allUsers = await prisma.user.findMany();
res.json(allUsers);
});

// Získání jednoho uživatele podle ID
app.get('/users/:id', async (req, res) => {
const user = await prisma.user.findUnique({
where: {
id: parseInt(req.params.id),
},
});
res.json(user);
});

// Aktualizace uživatele podle ID
app.put('/users/:id', async (req, res) => {
const updatedUser = await prisma.user.update({
where: {
id: parseInt(req.params.id),
},
data: req.body,
});
res.json(updatedUser);
});

// Smazání uživatele podle ID
app.delete('/users/:id', async (req, res) => {
await prisma.user.delete({
where: {
id: parseInt(req.params.id),
},
});
res.status(204).end();
});

Spuštění serveru

Po definování API tras můžeme spustit Express.js server:

app.listen(3000, () => {
console.log('Server naslouchá na portu 3000');
});

Závěrem

V tomto článku jsme se naučili, jak vytvořit REST API s pomocí Prisma a PostgreSQL. Prošli jsme nastavením projektu, definicí schématu databáze, provedením migrace, vytvořením REST API s CRUD trasami a spuštěním serveru.

Prisma představuje efektivní ORM nástroj, který zjednodušuje práci s databází PostgreSQL a umožňuje vývojářům soustředit se na logiku aplikace. Tento návod poskytuje pevný základ pro tvorbu robustních a efektivních REST API s Prismou a PostgreSQL.

Často kladené dotazy

1. Co je to REST API?
REST API je typ webového rozhraní, které umožňuje komunikaci mezi dvěma počítačovými systémy za pomoci HTTP protokolů.

2. Co je PostgreSQL?
PostgreSQL je spolehlivý, výkonný a populární relační databázový systém se širokou škálou funkcí a možnostmi škálování.

3. Co je Prisma?
Prisma je moderní ORM nástroj, který usnadňuje interakci mezi aplikací a databází PostgreSQL.

4. Jaké jsou výhody použití Prisma s PostgreSQL?
Prisma zjednodušuje práci s databází PostgreSQL, umožňuje vývojářům soustředit se na logiku aplikace, zajišťuje typovou bezpečnost a automatickou validaci dat.

5. Jak mohu hostovat své REST API?
Existuje několik možností hostování REST API, včetně cloudových platforem, tradičních virtuálních serverů a fyzických serverů.

6. Jak mohu zabezpečit své REST API?
Zabezpečení REST API lze dosáhnout pomocí ověřování, autorizace, šifrování a omezování rychlosti.

7. Jak mohu testovat své REST API?
K testování REST API lze použít různé nástroje a techniky, včetně jednotkových testů, integračních testů a API testovacích nástrojů.

8. Jak mohu monitorovat a logovat své REST API?