Průvodci

Jak vytvořit REST API: návrh, zabezpečení a nasazení

Pro vytvoření REST API si sepište zdroje, které vaše aplikace spravuje (uživatelé, objednávky, rezervace), každému přiřaďte URL, například /orders a /orders/{id}, a pro akce použijte HTTP metody: GET pro čtení, POST pro vytvoření, PATCH pro úpravu a DELETE pro smazání. Vracejte JSON s výstižnými stavovými kódy, validujte každý vstup, vyžadujte autentizaci a na serveru kontrolujte oprávnění ke každému záznamu. Seznamy stránkujte. Poté endpointy zdokumentujte a API nasaďte za HTTPS.

Tento průvodce popisuje návrhová rozhodnutí, konkrétní sadu tras, prompty pro AI nástroj na tvorbu aplikací a chyby, které vedou k bezpečnostním dírám. Pokud jsou pro vás API nová, začněte u toho, co je API.

Kdy potřebujete REST API

  • Váš webový frontend potřebuje ukládat a načítat data ze serveru
  • Mobilní aplikace, partner nebo automatizační nástroj potřebuje přístup k vašim datům
  • Jiné služby vám posílají události (webhooky)
  • Práci dělíte mezi frontendový a backendový tým

REST je nejrozšířenější styl, ale ne jediný. REST vs GraphQL vysvětluje, kdy se lépe hodí jeden flexibilní dotazovací endpoint.

Nejdřív návrh: zdroje a trasy

Napište si podstatná jména ve vaší aplikaci a to, co s nimi lidé dělají. Pro jednoduchou aplikaci na rezervace:

MetodaTrasaCo děláKód úspěchu
GET/api/bookingsVypíše rezervace volajícího (stránkovaně)200
POST/api/bookingsVytvoří rezervaci201
GET/api/bookings/{id}Vrátí jednu rezervaci200
PATCH/api/bookings/{id}Změní některá pole200
DELETE/api/bookings/{id}Zruší rezervaci204
GET/api/healthKontrola stavu pro monitoring200

Tyto trasy odpovídají operacím vytvoř, čti, uprav a smaž; viz co je CRUD. Stojí za to dodržovat tyto konvence:

  • Množná podstatná jména, žádná slovesa v URL: /bookings, ne /getBookings.
  • Vnořte jen na jednu úroveň, když to objasní vlastnictví: /bookings/{id}/notes.
  • Akce, které nejsou CRUD, mohou být podzdroje: POST /bookings/{id}/cancel je srozumitelnější než záhadný PATCH.
  • Jednotné pojmenování polí, například created_at všude.

Stavové kódy a chyby

Používejte standardní HTTP kódy, aby klient poznal, co se stalo, bez čtení textu:

KódVýznamPoužití
200OKÚspěšné čtení nebo úprava
201CreatedPOST něco vytvořil
204No ContentÚspěch bez něčeho k vrácení
400Bad RequestVstup neprošel validací
401UnauthorizedNejste přihlášeni nebo je token neplatný
403ForbiddenPřihlášeni jste, ale nemáte oprávnění
404Not FoundNeexistuje, nebo volající nesmí vědět, že existuje
409ConflictDuplicita nebo termín je už obsazen
429Too Many RequestsByl překročen limit požadavků
500Server ErrorNa vaší straně se něco pokazilo

Chyby vracejte v jednotném JSON tvaru, například {"error": {"code": "slot_taken", "message": "Tento termín už není k dispozici."}}, a v odpovědích nikdy neuvádějte výpisy zásobníku ani chyby databáze.

Možnosti a kompromisy

RozhodnutíJednoduchá volbaAlternativa
Kde API běžíAPI trasy ve vašem webovém frameworkuSamostatná API služba, užitečná pro více klientů nebo jiný jazyk
AutentizaceSession cookies pro vlastní webovou aplikaciTokeny (bearer tokeny nebo API klíče) pro mobilní aplikace a třetí strany
Stránkování?page=2&limit=20Kurzorové (?after=...), stabilnější pro velké a měnící se seznamy
VerzováníŽádné, dokud nemáte externí uživatele/v1/ v cestě, jakmile na něm někdo závisí
DokumentaceREADME s výpisem trasOpenAPI specifikace, ze které nástroje vytvoří interaktivní dokumentaci a klientský kód

Krok za krokem

  1. Vypište zdroje a trasy jak je uvedeno výše, včetně toho, kdo je smí volat.
  2. Namodelujte data ve vaší databázi s poli a vztahy, které potřebujete.
  3. Nejdřív vytvořte čtecí trasy, poté vytváření, úpravy a mazání.
  4. Validujte vstup u každého zápisu pomocí schématové knihovny: povinná pole, typy, délky, povolené hodnoty. Odmítněte neznámá pole.
  5. Přidejte autentizaci, poté autorizaci pro každý záznam: načtení /bookings/42 musí ověřit, že rezervace 42 patří volajícímu, a ne jen to, že je někdo přihlášen.
  6. Stránkujte každý seznam a omezte velikost stránky.
  7. Omezte počet požadavků u přihlášení a náročných tras. Viz omezení počtu požadavků.
  8. Nastavte CORS, jen pokud musí prohlížeče na jiných doménách volat API, a uveďte tyto původy výslovně. Jak opravit chyby CORS vysvětluje chyby, na které narazíte.
  9. Napište dokumentaci a testy pro každou trasu, včetně chybových stavů.
  10. Nasaďte s tajnými údaji v proměnných prostředí, HTTPS, logy a kontrolou stavu.

Prompty pro váš AI nástroj

Kostra:

Vytvoř REST API pro rezervace s těmito trasami: GET /api/health, GET /api/bookings (stránkovaně, max 50 na stránku), POST /api/bookings, GET /api/bookings/:id, PATCH /api/bookings/:id, DELETE /api/bookings/:id. Ukládej data do naší databáze. Těla požadavků validuj pomocí schématové knihovny a odmítni neznámá pole. Chyby vracej jako JSON {"error": {"code", "message"}} se správnými stavovými kódy (400, 401, 403, 404, 409). Tajné údaje drž v proměnných prostředí.

Zabezpečení:

U každé trasy pro rezervace vyžaduj přihlášení. Při každém čtení, úpravě a smazání na serveru ověř, že rezervace patří aktuálnímu uživateli; pokud ne, vrat 404. Nikdy nepřijímej ID uživatele ani role z těla požadavku. Omez POST /api/bookings na 20 požadavků za minutu na uživatele. Chyby loguj na serveru, aniž bys vracel výpisy zásobníku.

Dokumentace:

Napiš OpenAPI popis těchto tras a krátké README s ukázkovými požadavky a odpověďmi pro každou z nich.

Testování API

Testujte zvenku, mimo frontend, protože útočníci to udělají také:

  • Každá trasa funguje s platným vstupem a vrací popsaný tvar a kód
  • Chybějící nebo neplatná pole vrátí 400 s jasnou zprávou
  • Bez tokenu vrátí každá chráněná trasa 401
  • Uživatel A, který požádá o záznam uživatele B podle ID, dostane 404 nebo 403
  • Seznamy jsou stránkované; obrovský limit je omezen
  • Duplicitní nebo kolidující vytvoření vrací 409, ne 500
  • Překročení limitů vrací 429
  • Chybové odpovědi neobsahují výpisy zásobníku, SQL ani tajné údaje
  • CORS povoluje jen původy, které zamýšlíte

Časté chyby

  • Kontrola přihlášení bez kontroly vlastnictví. Nejčastější díra v API: libovolný přihlášený uživatel si změnou ID přečte libovolný záznam.
  • Důvěra klientovi. Ceny, role a ID uživatelů z těla požadavku lze upravit.
  • Vracení celých řádků databáze. Uniknou hashe hesel a interní pole. Vyberte, co každá odpověď obsahuje.
  • Neomezené seznamy. Jeden požadavek na všechny záznamy může zpomalit celou aplikaci.
  • 200 OK s chybou uvnitř. Klienti ani monitoring nepoznají, že selhalo.
  • CORS nastavený tak, aby povoloval vše u API, které používá cookies.
  • Žádná kontrola stavu ani logy, takže o výpadcích se dozvíte od uživatelů.

Pro širší kontrolu před spuštěním viz bezpečnostní kontrolní seznam pro aplikace postavené pomocí AI.

Vytvoření REST API v Mythexu

V Mythexu můžete požádat o API jako součást aplikace nebo jako samostatnou službu. Recept v dokumentaci REST API backend obsahuje startovací prompt: uveďte framework a trasy, požádejte o srozumitelné JSON chyby, držte tajné údaje v proměnných prostředí a přidejte Dockerfile. Kontejnerové backendy v Node, Pythonu, C#, Javě a dalších se publikují přes Dockerfile a nasazení z Publish zajišťuje Mythex (API backendy). Projekt může provozovat web i API server vedle sebe a v náhledu mezi nimi přepínat. Klíče ukládejte jako tajné údaje projektu a pokud API potřebuje databázi, požádejte o ni v chatu. Pro naplánovanou práci kolem API viz jak spouštět úlohy na pozadí.

Otázky

Co je REST API?

REST API je způsob, jak mohou programy pracovat s daty vaší aplikace přes HTTP. Každý typ dat je zdroj s vlastní URL, například /orders, a se zdrojem pracují standardní metody: GET pro čtení, POST pro vytvoření, PATCH nebo PUT pro úpravu a DELETE pro smazání. Data se obvykle posílají jako JSON.

V jakém jazyce mám REST API vytvořit?

Použijte ten, který zvládnete udržovat vy nebo váš tým. Dobře fungují Node.js s Expressem nebo Fastify, Python s FastAPI a frameworky v C# nebo Javě. Na jazyku záleží méně než na pravidlech pro trasy, stavové kódy, validaci a autentizaci.

Jak REST API zabezpečím?

Vyžadujte autentizaci na každé neveřejné trase, na serveru kontrolujte, zda volající smí přistupovat ke konkrétnímu záznamu, validujte veškerý vstup, používejte HTTPS, omezujte počet požadavků a tajné údaje držte v proměnných prostředí. Nikdy nevěřte ID ani rolím, které pošle klient.

Potřebuji pro REST API samostatný backend?

Ne vždy. Frameworky jako Next.js dokážou obsluhovat API trasy vedle stránek. Samostatná API služba dává smysl, když ji používá více klientů (web, mobilní aplikace, partneři) nebo když potřebuje vlastní jazyk či škálování.

Mythex · Pricing · Vytvořte cokoli s AI · Šablony webů a aplikací · Mythex v porovnání · Slovník tvorby aplikací s AI · Bezplatné nástroje pro tvorbu aplikací s AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)