Miongozo

Jinsi ya Kutengeneza REST API: Muundo, Usalama na Uwekaji

Ili kutengeneza REST API, orodhesha rasilimali ambazo app yako inasimamia (watumiaji, oda, uhifadhi), mpe kila moja URL kama /orders na /orders/{id}, kisha tumia mbinu za HTTP kwa vitendo: GET kusoma, POST kuunda, PATCH kusasisha, DELETE kufuta. Rudisha JSON pamoja na misimbo ya hali yenye maana, thibitisha kila data inayoingia, hitaji uthibitishaji na ukaguzi wa ruhusa kwa kila rekodi kwenye seva, na gawa orodha kwa kurasa. Kisha andika nyaraka za vitendo vya API na uweke API nyuma ya HTTPS.

Mwongozo huu unaeleza maamuzi ya usanifu, seti ya njia za mfano, maelekezo kwa zana yako ya kujenga app ya AI, na makosa yanayosababisha mashimo ya usalama. Ikiwa APIs ni mpya kwako, anza na API ni nini.

Wakati unahitaji REST API

  • Frontend ya tovuti yako inahitaji kuhifadhi na kupakia data kutoka kwenye seva
  • App ya simu, mshirika au zana ya otomatiki inahitaji kufikia data yako
  • Huduma nyingine zinakutumia matukio (webhooks)
  • Unagawa kazi kati ya timu ya frontend na timu ya backend

REST ndiyo mtindo unaotumika zaidi, lakini si pekee. REST vs GraphQL inaeleza wakati endpoint moja ya maswali inayonyumbulika inafaa zaidi.

Anza na muundo: rasilimali na njia

Andika nomino zote kwenye app yako na kile watu wanachofanya nazo. Kwa app rahisi ya uhifadhi:

MbinuNjiaKazi yakeMsimbo wa mafanikio
GET/api/bookingsOrodhesha uhifadhi wa mtumiaji (kwa kurasa)200
POST/api/bookingsUnda uhifadhi201
GET/api/bookings/{id}Pata uhifadhi mmoja200
PATCH/api/bookings/{id}Badilisha baadhi ya sehemu200
DELETE/api/bookings/{id}Ghairi uhifadhi204
GET/api/healthUkaguzi wa afya kwa ufuatiliaji200

Haya yanalingana na create, read, update na delete; angalia CRUD ni nini. Kanuni za kufuata:

  • Nomino za wingi, bila vitenzi kwenye URL: /bookings, si /getBookings.
  • Ngazi moja tu ya kiota pale inapoeleza umiliki: /bookings/{id}/notes.
  • Vitendo visivyo vya CRUD vinaweza kuwa rasilimali ndogo: POST /bookings/{id}/cancel ni wazi zaidi kuliko PATCH ya kichawi.
  • Majina thabiti ya sehemu, kwa mfano created_at kila mahali.

Misimbo ya hali na makosa

Tumia misimbo ya kawaida ya HTTP ili wateja wajue kilichotokea bila kuchambua maandishi:

MsimboMaanaItumike lini
200OKUsomaji au usasishaji umefanikiwa
201CreatedPOST imeunda kitu
204No ContentImefanikiwa bila cha kurudisha
400Bad RequestData imeshindwa uthibitishaji
401UnauthorizedHujaingia au tokeni si sahihi
403ForbiddenUmeingia lakini hairuhusiwi
404Not FoundHaipo, au mteja asijue kwamba ipo
409ConflictNakala, au nafasi tayari imechukuliwa
429Too Many RequestsKikomo cha maombi kimefikiwa
500Server ErrorKuna kitu kimeharibika upande wako

Rudisha makosa kwa umbo moja thabiti la JSON, kwa mfano {"error": {"code": "slot_taken", "message": "Muda huo hauko wazi tena."}}, na usiwahi kujumuisha stack traces au makosa ya database kwenye majibu.

Chaguo na mabadilishano

UamuziChaguo rahisiMbadala
Mahali API inapoishiAPI routes ndani ya mfumo wako wa wavutiHuduma tofauti ya API, inayofaa kwa wateja kadhaa au lugha tofauti
UthibitishajiSession cookies kwa app yako ya wavutiTokeni (bearer tokens au API keys) kwa app za simu na wahusika wengine
Kugawa kwa kurasa?page=2&limit=20Kwa cursor (?after=...), thabiti zaidi kwa orodha kubwa zinazobadilika
MatoleoHakuna mpaka uwe na watumiaji wa nje/v1/ kwenye njia pale wengine wanapoitegemea
NyarakaREADME inayoorodhesha njiaMaelezo ya OpenAPI, ambayo zana zinaweza kuyageuza kuwa nyaraka shirikishi na msimbo wa mteja

Hatua kwa hatua

  1. Orodhesha rasilimali na njia kama hapo juu, pamoja na nani anaruhusiwa kuzitumia.
  2. Panga data kwenye database yako kwa sehemu na mahusiano unayohitaji.
  3. Jenga njia za kusoma kwanza, kisha unda, sasisha na ufute.
  4. Thibitisha data inayoingia kwenye kila andiko kwa maktaba ya schema: sehemu zinazohitajika, aina, urefu, na thamani zinazoruhusiwa. Kataa sehemu zisizojulikana.
  5. Ongeza uthibitishaji, kisha idhini kwa kila rekodi: kufungua /bookings/42 lazima kukague kwamba uhifadhi 42 ni wa mtumiaji, si kwamba tu mtu fulani ameingia.
  6. Gawa kila orodha kwa kurasa na weka kikomo cha ukubwa wa ukurasa.
  7. Weka kikomo cha maombi kwenye login na njia zenye gharama kubwa. Angalia kikomo cha maombi.
  8. Sanidi CORS tu ikiwa vivinjari vya domain nyingine lazima viite API, na orodhesha origin hizo waziwazi. Jinsi ya kurekebisha makosa ya CORS inaeleza makosa utakayoyaona.
  9. Andika nyaraka na majaribio kwa kila njia, pamoja na visa vya kushindwa.
  10. Weka kwenye uzalishaji ukiwa na siri kwenye environment variables, HTTPS, logs na ukaguzi wa afya.

Maelekezo ya kumpa zana yako ya kujenga AI

Kujenga muundo:

Unda REST API ya uhifadhi yenye njia hizi: GET /api/health, GET /api/bookings (kwa kurasa, upeo 50 kwa ukurasa), POST /api/bookings, GET /api/bookings/:id, PATCH /api/bookings/:id, DELETE /api/bookings/:id. Hifadhi data kwenye database yetu. Thibitisha miili ya maombi kwa maktaba ya schema na ukatae sehemu zisizojulikana. Rudisha makosa ya JSON kama {"error": {"code", "message"}} pamoja na misimbo sahihi ya hali (400, 401, 403, 404, 409). Weka siri kwenye environment variables.

Usalama:

Hitaji kuingia kwenye kila njia ya bookings. Kwenye kila usomaji, usasishaji na ufutaji, hakikisha kwenye seva kwamba uhifadhi ni wa mtumiaji wa sasa; rudisha 404 ikiwa si wake. Usikubali user IDs wala majukumu kutoka kwenye ombi. Weka kikomo cha POST /api/bookings kuwa 20 kwa dakika kwa kila mtumiaji. Rekodi makosa kwenye seva bila kurudisha stack traces.

Nyaraka:

Andika maelezo ya OpenAPI ya njia hizi, na README fupi yenye mifano ya maombi na majibu kwa kila moja.

Kujaribu API yako

Jaribu kutoka nje ya frontend, kwa sababu washambuliaji watafanya hivyo:

  • Kila njia inafanya kazi kwa data sahihi na inarudisha umbo na msimbo uliotajwa
  • Sehemu zinazokosekana au batili zinarudisha 400 pamoja na ujumbe wazi
  • Bila tokeni, kila njia iliyolindwa inarudisha 401
  • Mtumiaji A akiomba rekodi ya mtumiaji B kwa ID, anapata 404 au 403
  • Orodha zimegawa kwa kurasa; limit kubwa inapunguzwa
  • Uundaji unaorudiwa au unaogongana unarudisha 409, si 500
  • Vikomo vya maombi vinarudisha 429
  • Majibu ya makosa hayana stack traces, SQL wala siri
  • CORS inaruhusu origin unazozikusudia tu

Makosa ya kawaida

  • Kukagua kuingia lakini si umiliki. Shimo kubwa zaidi la API: mtumiaji yeyote aliyeingia anaweza kusoma rekodi yoyote kwa kubadilisha ID.
  • Kuamini mteja. Bei, majukumu na user IDs kutoka kwenye ombi vinaweza kuhaririwa.
  • Kurudisha safu nzima za database. Hash za nenosiri na sehemu za ndani zinaweza kuvuja. Chagua kile kila jibu linachojumuisha.
  • Orodha zisizo na kikomo. Ombi moja la rekodi zote linaweza kupunguza kasi ya app nzima.
  • 200 OK yenye ujumbe wa hitilafu ndani. Wateja na ufuatiliaji hawawezi kujua kwamba imeshindwa.
  • CORS imewekwa kuruhusu kila kitu kwenye API inayotumia cookies.
  • Hakuna ukaguzi wa afya wala logs, hivyo unagundua hitilafu kupitia watumiaji.

Kwa ukaguzi mpana kabla ya kuzindua, angalia orodha ya usalama kwa app zilizojengwa na AI.

Kujenga REST API kwenye Mythex

Unaweza kuomba Mythex itengeneze API kama sehemu ya app yako au kama huduma yake yenyewe. Kichocheo cha nyaraka REST API backend kina maelekezo ya kuanzia: taja mfumo wako na njia zako, omba makosa wazi ya JSON, weka siri kwenye environment variables, na jumuisha Dockerfile. Backends za kontena katika Node, Python, C#, Java na nyingine huchapishwa kupitia Dockerfile, na Mythex inashughulikia uwekaji kutoka Publish (API backends). Mradi unaweza kuendesha tovuti na seva ya API kando kwa kando, na unaweza kubadilisha kati yao kwenye preview. Hifadhi funguo kama siri za mradi, na ikiwa API inahitaji database, iombe kwenye chat. Kwa kazi zilizopangwa zinazozunguka API yako, angalia jinsi ya kuendesha kazi za usuli.

Maswali

REST API ni nini?

REST API ni njia ya programu kufanya kazi na data ya app yako kupitia HTTP. Kila aina ya data ni rasilimali yenye URL yake, kama /orders, na vitendo vya kawaida hufanya kazi nayo: GET kusoma, POST kuunda, PATCH au PUT kusasisha, na DELETE kufuta. Data kwa kawaida hutumwa kama JSON.

Nifanye REST API kwa lugha gani?

Tumia lugha ambayo wewe au timu yako mnaweza kuitunza. Node.js na Express au Fastify, Python na FastAPI, na mifumo ya C# au Java yote hufanya kazi vizuri. Kanuni za njia, misimbo ya hali, uthibitishaji wa data na uthibitishaji wa mtumiaji ni muhimu zaidi kuliko lugha yenyewe.

Ninawezaje kulinda REST API?

Hitaji uthibitishaji kwenye kila njia isiyo ya umma, hakikisha kwenye seva kwamba mwombaji ana ruhusa ya kufikia kila rekodi mahususi, thibitisha data yote inayoingia, tumia HTTPS, weka kikomo cha maombi, na hifadhi siri kwenye environment variables. Usiwahi kuamini ID au majukumu yanayotumwa na mteja.

Je, ninahitaji backend tofauti kwa REST API?

Si lazima kila wakati. Mifumo kama Next.js inaweza kutoa API routes pamoja na kurasa. Huduma tofauti ya API ina maana zaidi wakati wateja kadhaa (wavuti, simu, washirika) wanaitumia, au inapohitaji lugha au ukuaji wake yenyewe.

Mythex · Pricing · Jenga chochote kwa AI · Violezo vya tovuti na programu · Mythex ikilinganishwa · Kamusi ya istilahi za kujenga programu kwa AI · Zana za bure za kujenga programu kwa 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 Slovenščina Soomaali Shqip Srpski Svenska தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)