Wygeneruj endpoint REST API dla swojej aplikacji webowej z użyciem Nodejs i Express - Prompt do ChatGPT
Wygeneruj produkcyjne REST API w Node.js/Express z kodem, testami, dokumentacją i wdrożeniem. Zyskaj skalowalność i wydajność: autentykacja, walidacja, Swagger/Docker, CI/CD, monitoring.
Co robi ten prompt:
-
Generuje kompletny plik routera dla frameworka Express.js w Node.js, gotowy do użycia w projekcie.
-
Implementuje standardowe operacje CRUD (Create, Read, Update, Delete) dla zdefiniowanego przez użytkownika zasobu (np. użytkownika, produktu).
-
Kod wynikowy zawiera podstawową walidację danych wejściowych, obsługę błędów oraz komentarze, co czyni go szablonem o jakości produkcyjnej.
Jesteś Senior Backend Developerem z 12-letnim doświadczeniem w budowaniu skalowalnych i bezpiecznych API w ekosystemie Node.js. Specjalizujesz się w architekturze RESTful i frameworku Express.js. Twój kod jest czysty, wydajny i zgodny z najlepszymi praktykami.
Zadanie (Cel):
Stwórz kompletny, gotowy do użycia plik routera dla Express.js, który implementuje pełny zestaw operacji CRUD (Create, Read, Update, Delete) dla zasobu [Nazwa Zasobu]. Kod musi być produkcyjnej jakości, zawierać walidację danych wejściowych i obsługę błędów.
Format Odpowiedzi:
- Pojedynczy Blok Kodu: Dostarcz cały kod w jednym, samowystarczalnym bloku kodu JavaScript, gotowym do wklejenia do pliku
routes/[nazwa_zasobu].js. - Struktura Kodu:
- Zaimportuj
express. - Zainicjuj
express.Router(). - Zaimplementuj 5 endpointów dla zasobu
[Nazwa Zasobu](w liczbie mnogiej, np./uzytkownicy):GET /- Zwraca listę wszystkich zasobów.GET /:id- Zwraca pojedynczy zasób o podanym ID.POST /- Tworzy nowy zasób na podstawie danych zreq.body.PUT /:id- Aktualizuje istniejący zasób.DELETE /:id- Usuwa zasób o podanym ID.
- Wyeksportuj router używając
module.exports.
- Zaimportuj
- Komentarze i Placeholdery:
- Każdy endpoint musi być poprzedzony zwięzłym komentarzem wyjaśniającym jego działanie, np.
// GET /api/[nazwa_zasobu] - Pobierz wszystkie.... - W miejscach, gdzie powinna znaleźć się logika biznesowa lub interakcja z bazą danych, wstaw komentarz-placeholder, np.
// TODO: Implementacja logiki połączenia z bazą danych.
- Każdy endpoint musi być poprzedzony zwięzłym komentarzem wyjaśniającym jego działanie, np.
- Obsługa Danych:
- Wszystkie odpowiedzi z serwera muszą być w formacie JSON.
- Używaj poprawnych kodów statusu HTTP (200, 201, 204, 400, 404, 500).
Najważniejsze:
- RESTful Compliance: Priorytetem jest ścisłe przestrzeganie zasad REST. Użyj odpowiednich metod HTTP (GET, POST, PUT, DELETE) dla odpowiednich akcji.
- Walidacja: W endpointach
POSTiPUTzaimplementuj podstawową walidację, sprawdzającą, czy wszystkie wymagane[Pola Zasobu](poza ID) są obecne wreq.body. W przypadku błędu zwróć status 400 z komunikatem. - Obsługa Błędów: Zaimplementuj obsługę przypadku, gdy zasób o danym ID nie zostanie znaleziony (w
GET /:id,PUT /:id,DELETE /:id), zwracając status 404. - Przejrzystość Kodu: Kod ma być czytelny, z konsekwentnym formatowaniem i nazewnictwem. Zmienne i funkcje muszą mieć nazwy jasno określające ich przeznaczenie.
Jak używać tego prompta:
Należy uzupełnić dwa główne pola w sekcji "Dane wejściowe": [Nazwa Zasobu] oraz [Pola Zasobu]. Przykładowo, aby stworzyć API do zarządzania produktami, można użyć następujących wartości:
Nazwa Zasobu: Produkt
Pola Zasobu: id, nazwa, cena, kategoria, ilosc_na_magazynie
Dobrze wiedzieć
Wygenerowany kod jest doskonałym punktem wyjścia do budowy API zgodnego z zasadami REST. Stosowanie poprawnych metod HTTP (GET, POST, PUT, DELETE) i kodów statusu (200, 404, 500) jest kluczowe dla tworzenia przewidywalnych i łatwych w integracji usług. Pamiętaj, że nazwa endpointu powinna być w liczbie mnogiej i najlepiej w języku angielskim (np. /users, /products), co jest powszechnie przyjętym standardem w tworzeniu API.
Chociaż prompt generuje solidną strukturę, nie obejmuje on aspektów bezpieczeństwa, takich jak autoryzacja i uwierzytelnianie. W rzeczywistej aplikacji kluczowe będzie dodanie warstwy pośredniej (middleware) do weryfikacji tożsamości użytkownika (np. za pomocą tokenów JWT) i sprawdzania jego uprawnień do wykonywania określonych operacji. Ponadto, walidacja powinna być rozszerzona o oczyszczanie danych (sanitization), aby zapobiec atakom typu XSS czy SQL Injection.