Juhendid

Kuidas ehitada REST API: disain, turvalisus ja juurutamine

REST API ehitamiseks loetlege oma rakenduses hallatavad ressursid (kasutajad, tellimused, broneeringud), andke igaühele URL, näiteks /orders ja /orders/{id}, ning kasutage tegevuste jaoks HTTP meetodeid: GET lugemiseks, POST loomiseks, PATCH uuendamiseks ja DELETE eemaldamiseks. Tagastage JSON koos sisukate olekukoodidega, valideerige iga sisend, nõudke autentimist ja kontrollige serveris õigusi iga kirje kohta eraldi ning jagage nimekirjad lehekülgedeks. Seejärel dokumenteerige lõpp-punktid ja juurutage API HTTPS-i taga.

Selles juhendis on disainiotsused, näidisstruktuur marsruutidest, promptid AI rakenduste ehitajale ning vead, mis tekitavad turvaaukusid. Kui API-d on teile uued, alustage sellest, mis on API.

Millal vajate REST API-d

  • Teie veebiliides peab andmeid serverisse salvestama ja sealt laadima
  • Mobiilirakendus, partner või automatiseerimise tööriist vajab ligipääsu teie andmetele
  • Teised teenused saadavad teile sündmusi (webhookid)
  • Töö jaguneb frontendi ja backendi meeskonna vahel

REST on kõige levinum stiil, kuid mitte ainus. REST vs GraphQL selgitab, millal sobib paremini üks paindlik päringute lõpp-punkt.

Esmalt disain: ressursid ja marsruudid

Kirjutage üles oma rakenduse nimisõnad ja see, mida inimesed nendega teevad. Lihtsa broneerimisrakenduse näide:

MeetodMarsruutMida teebÕnnestumise kood
GET/api/bookingsKutsuja broneeringute loend (lehekülgedeks jaotatud)200
POST/api/bookingsLoo broneering201
GET/api/bookings/{id}Ühe broneeringu vaatamine200
PATCH/api/bookings/{id}Muuda mõningaid välju200
DELETE/api/bookings/{id}Tühista broneering204
GET/api/healthTervisekontroll jälgimiseks200

Need vastavad loomise, lugemise, uuendamise ja kustutamise toimingutele (CRUD); vt mis on CRUD. Soovitatavad reeglid:

  • Mitmuse nimisõnad, ilma tegusõnadeta URL-ides: /bookings, mitte /getBookings.
  • Pesastage ainult ühe taseme võrra, kui see selgitab omandisuhet: /bookings/{id}/notes.
  • Tegevused, mis pole CRUD, võivad olla alamressursid: POST /bookings/{id}/cancel on selgem kui salapärane PATCH.
  • Ühtne nimetamine väljadel, näiteks created_at kõikjal.

Olekukoodid ja vead

Kasutage standardseid HTTP koode, et kliendid saaksid aru, mis juhtus, ilma teksti parsimata:

KoodTähendusKasuta, kui
200OKEdukas lugemine või uuendamine
201CreatedPOST lõi midagi
204No ContentEdu, aga tagastada pole midagi
400Bad RequestSisend ei läbinud valideerimist
401UnauthorizedPole sisse logitud või vale token
403ForbiddenSisse logitud, kuid pole luba
404Not FoundEi eksisteeri või kutsuja ei tohi teada, et see eksisteerib
409ConflictDuplikaat või aeg on juba broneeritud
429Too Many RequestsPäringupiirang on täis
500Server ErrorMidagi läks teie poolel katki

Tagastage vead ühtses JSON-kujus, näiteks {"error": {"code": "slot_taken", "message": "See aeg ei ole enam saadaval."}}, ja ärge kunagi lisage vastustesse veapinu ega andmebaasi vigu.

Valikud ja kompromissid

OtsusLihtne valikAlternatiiv
Kus API asubAPI-marsruudid teie veebiraamistikusEraldi API-teenus, kasulik mitme kliendi või teistsuguse keele korral
AutentimineSeansiküpsised enda veebirakenduseleTokenid (bearer-tokenid või API-võtmed) mobiilirakendustele ja kolmandatele osapooltele
Lehekülgede jaotus?page=2&limit=20Kursoripõhine (?after=...), stabiilsem suurte ja muutuvate loendite puhul
VersioonihaldusPole, kuni teil pole väliseid kasutajaid/v1/ teel, kui teised sõltuvad juba API-st
DokumentatsioonREADME marsruutide loendigaOpenAPI kirjeldus, mille tööriistad saavad teisendada interaktiivseks dokumentatsiooniks ja kliendikoodiks

Samm-sammult

  1. Loetlege ressursid ja marsruudid nagu ülal, sh see, kes iga marsruuti tohib kutsuda.
  2. Modelleerige andmed oma andmebaasis vajalike väljade ja seostega.
  3. Ehitage esmalt lugemise marsruudid, seejärel loomine, uuendamine ja kustutamine.
  4. Valideerige sisend iga kirjutamise puhul skeemiteegi abil: kohustuslikud väljad, tüübid, pikkused, lubatud väärtused. Lükake tundmatud väljad tagasi.
  5. Lisage autentimine, seejärel õiguste kontroll kirje kohta: marsruudi /bookings/42 laadimisel tuleb kontrollida, et broneering 42 kuulub kutsujale, mitte ainult seda, et keegi on sisse logitud.
  6. Jagage iga loend lehekülgedeks ja piirake lehe suurust.
  7. Piirake päringute arvu sisselogimisel ja kulukatel marsruutidel. Vt päringupiirangud.
  8. Seadistage CORS ainult siis, kui teiste domeenide brauserid peavad API-d kutsuma, ja lubage need päritolud selgesõnaliselt. Kuidas parandada CORS-i vigu selgitab vigu, mida näete.
  9. Kirjutage dokumentatsioon ja testid iga marsruudi kohta, sh tõrkejuhtumid.
  10. Juurutage nii, et saladused on keskkonnamuutujates, ühendus on HTTPS-i kaudu ning olemas on logid ja tervisekontroll.

Promptid AI ehitajale

Skelett:

Loo broneeringute REST API järgmiste marsruutidega: GET /api/health, GET /api/bookings (lehekülgedeks jaotatud, maksimaalselt 50 lehe kohta), POST /api/bookings, GET /api/bookings/:id, PATCH /api/bookings/:id, DELETE /api/bookings/:id. Salvesta andmed meie andmebaasi. Valideeri päringukehad skeemiteegiga ja lükka tundmatud väljad tagasi. Tagasta JSON-vead kujul {"error": {"code", "message"}} õigete olekukoodidega (400, 401, 403, 404, 409). Hoia saladused keskkonnamuutujates.

Turvalisus:

Nõua sisselogimist igal broneeringute marsruudil. Iga lugemise, uuendamise ja kustutamise puhul kontrolli serveris, et broneering kuulub praegusele kasutajale; kui ei kuulu, tagasta 404. Ära kunagi võta kasutaja ID-sid ega rolle päringu kehast vastu. Piira POST /api/bookings 20 päringuni minutis kasutaja kohta. Logi vead serveris, ilma veapinuta vastustes.

Dokumentatsioon:

Kirjelda neid marsruute OpenAPI kirjelduses ja kirjuta lühike README, kus on iga marsruudi näidispäringud ja -vastused.

API testimine

Testige väljastpoolt frontendi, sest ründajad teevad seda:

  • Iga marsruut töötab korrektse sisendiga ja tagastab dokumenteeritud kuju ja koodi
  • Puuduvad või vigased väljad annavad 400 koos selge sõnumiga
  • Tokenita päring annab 401 igal kaitstud marsruudil
  • Kasutaja A päring kasutaja B kirjele ID järgi annab 404 või 403
  • Loendid on lehekülgedeks jaotatud; suur limit on piiratud
  • Duplikaat- või konfliktsed loomised annavad 409, mitte 500
  • Päringupiirangud annavad 429
  • Vigade vastused ei sisalda veapinu, SQL-i ega saladusi
  • CORS lubab ainult soovitud päritolusid

Levinud vead

  • Sisselogimise kontrollimine ilma omandi kontrollita. Kõige levinum API-auk: iga sisselogitud kasutaja saab lugeda mis tahes kirjet, kui muudab ID-d.
  • Kliendi usaldamine. Hinnad, rollid ja kasutaja ID-d päringu kehast on muudetavad.
  • Terve andmebaasirea tagastamine. Paroolide räsid ja sisemised väljad lekivad. Valige, mida iga vastus sisaldab.
  • Piiramata loendid. Iga kirje päring võib aeglustada kogu rakendust.
  • 200 OK koos veateatega sees. Kliendid ja jälgimine ei saa aru, et see ebaõnnestus.
  • CORS seatud lubama kõike API puhul, mis kasutab küpsiseid.
  • Tervisekontrolli ega logisid ei ole, nii et katkestustest saate teada kasutajatelt.

Laiemaks eeltootmise kontrolliks vt turvakontrollnimekirja AI-ehitatud rakendustele.

REST API ehitamine Mythexis

Mythexis saate paluda API-d osana oma rakendusest või eraldi teenusena. Dokumentatsiooni retsept REST API backend sisaldab algpromptit: nimetage raamistik ja marsruudid, paluge selgeid JSON-vigu, hoidke saladused keskkonnamuutujates ja lisage Dockerfile. Konteineritel põhinevad backendid Node, Python, C#, Java ja teistes keeltes avaldatakse Dockerfile’i kaudu ning Mythex haldab juurutamist menüüst Publish (API backendid). Projekt võib käitada kõrvuti veebilehte ja API serverit ning eelvaates saate neid vahetada. Hoidke võtmed projekti saladustena ja kui API vajab andmebaasi, paluge see vestluses. Taustatööde ümber oma API-ga vt kuidas käivitada taustatöid.

Küsimused

Mis on REST API?

REST API on viis, kuidas programmid saavad teie rakenduse andmetega HTTP kaudu töötada. Iga andmetüüp on ressurss oma URL-iga, näiteks /orders, ja selle kallal toimivad standardsed meetodid: GET lugemiseks, POST loomiseks, PATCH või PUT uuendamiseks ja DELETE eemaldamiseks. Andmeid saadetakse tavaliselt JSON-vormingus.

Mis keeles peaksin REST API-d ehitama?

Kasutage seda, mida teie või teie meeskond suudab hooldada. Node.js koos Expressi või Fastifyga, Python koos FastAPI-ga ning C# või Java raamistikud sobivad kõik hästi. Marsruutide, olekukoodide, valideerimise ja autentimise disainireeglid on keelest olulisemad.

Kuidas REST API-d turvata?

Nõudke autentimist igal marsruudil, mis pole avalik, kontrollige serveris, kas kutsuja tohib just seda konkreetset kirjet kasutada, valideerige kogu sisend, kasutage HTTPS-i, piirake päringute arvu ja hoidke saladused keskkonnamuutujates. Ärge kunagi usaldage kliendi saadetud ID-sid ega rolle.

Kas REST API jaoks on vaja eraldi backend’i?

Mitte alati. Raamistikud nagu Next.js suudavad pakkuda API-marsruute lehtede kõrval. Eraldi API-teenus on mõttekas siis, kui seda kasutab mitu klienti (veebirakendus, mobiil, partnerid) või kui sellel on vaja oma keelt või skaleerimist.

Mythex · Pricing · Ehita kõike AI-ga · Veebilehtede ja rakenduste mallid · Mythex võrdluses · Tehisintellektiga rakenduste ehitamise sõnastik · Tasuta tööriistad tehisintellektiga rakenduste ehitamiseks · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) فارسی 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 简体中文 繁體中文(香港) 繁體中文(台灣)