Príručky

Ako vytvoriť REST API: návrh, zabezpečenie a nasadenie

Na vytvorenie REST API si najprv zapíšte zdroje, ktoré vaša aplikácia spravuje (používatelia, objednávky, rezervácie), každému dajte URL, napríklad /orders a /orders/{id}, a na akcie použite HTTP metódy: GET na čítanie, POST na vytvorenie, PATCH na úpravu, DELETE na odstránenie. Vracajte JSON s výstižnými stavovými kódmi, overte každý vstup, na serveri vyžadujte autentifikáciu a kontrolu oprávnení pre každý záznam a zoznamy stránkujte. Potom API zdokumentujte a nasaďte za HTTPS.

Tento sprievodca pokrýva rozhodnutia pri návrhu, sadu trás ako príklad, prompty pre AI nástroj na tvorbu aplikácií a chyby, ktoré spôsobujú bezpečnostné diery. Ak sú pre vás API nové, začnite s čím je API.

Kedy potrebujete REST API

  • Váš webový frontend potrebuje ukladať a načítavať dáta zo servera
  • Mobilná aplikácia, partner alebo automatizačný nástroj potrebuje prístup k vašim dátam
  • Iné služby vám posielajú udalosti (webhooky)
  • Rozdeľujete prácu medzi tím frontendu a backendu

REST je najbežnejší štýl, ale nie jediný. REST vs GraphQL vysvetľuje, kedy sa lepšie hodí jeden flexibilný dotazovací endpoint.

Najprv návrh: zdroje a trasy

Zapíšte si podstatné mená vo vašej aplikácii a to, čo s nimi ľudia robia. Pre jednoduchú aplikáciu na rezervácie:

MetódaTrasaČo robíÚspešný kód
GET/api/bookingsVypíše rezervácie volajúceho (stránkovane)200
POST/api/bookingsVytvorí rezerváciu201
GET/api/bookings/{id}Vráti jednu rezerváciu200
PATCH/api/bookings/{id}Zmení niektoré polia200
DELETE/api/bookings/{id}Zruší rezerváciu204
GET/api/healthKontrola stavu pre monitoring200

Tieto trasy zodpovedajú operáciám create, read, update a delete; pozrite si čo je CRUD. Stojí za to dodržiavať tieto konvencie:

  • Množné podstatné mená, žiadne slovesá v URL: /bookings, nie /getBookings.
  • Vnorenie len o jednu úroveň, keď to objasňuje vlastníctvo: /bookings/{id}/notes.
  • Akcie, ktoré nie sú CRUD, môžu byť podzdroje: POST /bookings/{id}/cancel je jasnejšie než záhadné PATCH.
  • Konzistentné názvy polí, napríklad created_at všade.

Stavové kódy a chyby

Používajte štandardné HTTP kódy, aby klienti vedeli, čo sa stalo, bez parsovania textu:

KódVýznamPoužite, keď
200OKÚspešné čítanie alebo úprava
201CreatedPOST vytvoril niečo nové
204No ContentÚspech bez čo vrátiť
400Bad RequestVstup neprešiel validáciou
401UnauthorizedNie ste prihlásený alebo zlý token
403ForbiddenPrihlásený, ale nemáte oprávnenie
404Not FoundNeexistuje, alebo volajúci nesmie vedieť, že existuje
409ConflictDuplicita alebo termín je už obsadený
429Too Many RequestsDosiahnutý limit požiadaviek
500Server ErrorNa vašej strane sa niečo pokazilo

Chyby vracajte v jednotnom JSON tvare, napríklad {"error": {"code": "slot_taken", "message": "Ten čas už nie je dostupný."}}, a v odpovediach nikdy neposielajte stack trace ani chyby databázy.

Možnosti a kompromisy

RozhodnutieJednoduchá voľbaAlternatíva
Kde API bežíAPI trasy vo vašom webovom frameworkuSamostatná API služba, užitočná pre viacero klientov alebo iný jazyk
AutentifikáciaSession cookies pre vašu vlastnú webovú aplikáciuTokeny (bearer tokeny alebo API kľúče) pre mobilné aplikácie a tretie strany
Stránkovanie?page=2&limit=20Kurzorové (?after=...), stabilnejšie pre veľké a meniace sa zoznamy
VerziovanieŽiadne, kým nemáte externých používateľov/v1/ v ceste, keď na ňom závisia ďalší
DokumentáciaREADME so zoznamom trásOpenAPI špecifikácia, z ktorej nástroje urobia interaktívnu dokumentáciu a klientský kód

Krok za krokom

  1. Zoznam zdrojov a trás ako vyššie, vrátane toho, kto ich smie volať.
  2. Namodelujte dáta vo vašej databáze s poľami a vzťahmi, ktoré potrebujete.
  3. Najprv vytvorte čítacie trasy, potom vytváranie, úpravu a mazanie.
  4. Overte vstup pri každom zápise pomocou schémovej knižnice: povinné polia, typy, dĺžky, povolené hodnoty. Odmietnite neznáme polia.
  5. Pridajte autentifikáciu, potom autorizáciu pre každý záznam: načítanie /bookings/42 musí overiť, že rezervácia 42 patrí volajúcemu, nielen to, že je niekto prihlásený.
  6. Stránkujte každý zoznam a obmedzte veľkosť stránky.
  7. Obmedzte počet požiadaviek pri prihlasovaní a náročných trasách. Pozrite obmedzenie počtu požiadaviek.
  8. Nastavte CORS, len ak musia prehliadače na iných doménach volať API, a tieto pôvody vypíšte výslovne. Ako opraviť CORS chyby vysvetľuje chyby, ktoré uvidíte.
  9. Napíšte dokumentáciu a testy pre každú trasu vrátane zlyhávajúcich prípadov.
  10. Nasaďte s tajomstvami v premenných prostredia, HTTPS, logmi a kontrolou stavu.

Prompty pre váš AI nástroj

Kostra:

Vytvor REST API pre rezervácie s týmito trasami: GET /api/health, GET /api/bookings (stránkovane, max. 50 na stránku), POST /api/bookings, GET /api/bookings/:id, PATCH /api/bookings/:id, DELETE /api/bookings/:id. Ukladaj dáta do našej databázy. Telá požiadaviek over pomocou schémovej knižnice a odmietni neznáme polia. Chyby vracaj ako JSON {"error": {"code", "message"}} so správnymi stavovými kódmi (400, 401, 403, 404, 409). Tajomstvá drž v premenných prostredia.

Zabezpečenie:

Vyžaduj prihlásenie na každej trase rezervácií. Pri každom čítaní, úprave a mazaní over na serveri, že rezervácia patrí aktuálnemu používateľovi; ak nepatrí, vráť 404. Nikdy neprijímaj ID používateľov ani roly z tela požiadavky. Obmedz POST /api/bookings na 20 za minútu na používateľa. Chyby zapisuj na serveri do logu bez vrátenia stack trace.

Dokumentácia:

Napíš OpenAPI popis týchto trás a krátke README s príkladmi požiadaviek a odpovedí pre každú z nich.

Testovanie vášho API

Testujte zvonku, mimo frontendu, lebo útočníci to tiež urobia:

  • Každá trasa funguje s platným vstupom a vracia dokumentovaný tvar a kód
  • Chýbajúce alebo neplatné polia vrátia 400 s jasnou správou
  • Bez tokenu vráti 401 každá chránená trasa
  • Používateľ A, ktorý požiada o záznam používateľa B podľa ID, dostane 404 alebo 403
  • Zoznamy sú stránkované; veľký limit je obmedzený
  • Duplicitné alebo konfliktné vytvorenia vrátia 409, nie 500
  • Limity požiadaviek vracajú 429
  • Chybové odpovede neobsahujú stack trace, SQL ani tajomstvá
  • CORS povoľuje len pôvody, ktoré ste zamýšľali

Časté chyby

  • Kontrola prihlásenia bez kontroly vlastníctva. Najčastejšia diera v API: ľubovoľný prihlásený používateľ môže čítať ľubovoľný záznam zmenou ID.
  • Dôverovanie klientovi. Ceny, roly a ID používateľov z tela požiadavky sa dajú upraviť.
  • Vracanie celých riadkov databázy. Hashe hesiel a interné polia unikajú. Vyberte, čo každá odpoveď obsahuje.
  • Neohraničené zoznamy. Jedna požiadavka na všetky záznamy môže spomaliť celú aplikáciu.
  • 200 OK s chybovou správou vo vnútri. Klienti a monitoring nevidia, že zlyhalo.
  • CORS nastavený tak, aby povoľoval všetko pri API, ktoré používa cookies.
  • Žiadna kontrola stavu ani logy, takže sa o výpadkoch dozviete od používateľov.

Na širší kontrolu pred spustením pozrite bezpečnostný kontrolný zoznam pre aplikácie vytvorené s AI.

Budovanie REST API v Mythex

V Mythex môžete REST API vyžiadať ako súčasť aplikácie alebo ako samostatnú službu. Recept REST API backend v dokumentácii obsahuje štartovací prompt: pomenujte framework a trasy, požiadajte o jasné JSON chyby, tajomstvá držte v premenných prostredia a pridajte Dockerfile. Kontajnerové backendy v Node, Pythone, C#, Jave a ďalších sa publikujú cez Dockerfile a Mythex zvládne nasadenie z Publish (API backendy). Projekt môže bežať ako webová stránka a API server vedľa seba a medzi nimi môžete v náhľade prepínať. Kľúče ukladajte ako tajomstvá projektu a ak API potrebuje databázu, požiadajte o ňu v chate. Pre plánovanú prácu okolo vášho API pozrite ako spúšťať úlohy na pozadí.

Otázky

Čo je REST API?

REST API je spôsob, ako programy pracujú s dátami vašej aplikácie cez HTTP. Každý typ dát je zdroj s vlastným URL, napríklad /orders, a štandardné metódy s ním pracujú: GET na čítanie, POST na vytvorenie, PATCH alebo PUT na úpravu a DELETE na odstránenie. Dáta sa zvyčajne posielajú ako JSON.

V akom jazyku mám REST API vytvoriť?

Použite to, čo dokážete vy alebo váš tím udržiavať. Node.js s Express alebo Fastify, Python s FastAPI a frameworky v C# alebo Jave fungujú dobre. Pravidlá pre trasy, stavové kódy, validáciu a autentifikáciu sú dôležitejšie než jazyk.

Ako zabezpečím REST API?

Vyžadujte prihlásenie na každej trase, ktorá nie je verejná, na serveri overte, či volajúci smie pristupovať ku každému konkrétnemu záznamu, validujte všetok vstup, používajte HTTPS, obmedzte počet požiadaviek a tajomstvá držte v premenných prostredia. Nikdy nedôverujte ID ani rolám, ktoré pošle klient.

Potrebujem samostatný backend pre REST API?

Nie vždy. Frameworky ako Next.js dokážu poskytovať API trasy spolu so stránkami. Samostatná API služba dáva zmysel, keď ju používa viacero klientov (web, mobil, partneri) alebo keď potrebuje vlastný jazyk alebo škálovanie.

Mythex · Pricing · Vytvorte čokoľvek s AI · Šablóny webov a aplikácií · Mythex v porovnaní · Slovník pojmov tvorby aplikácií s AI · Bezplatné nástroje na tvorbu aplikácií s AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština 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 Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)