گائیڈز

REST API کیسے بنائیں: ڈیزائن، سیکیورٹی اور ڈیپلائمنٹ

REST API بنانے کے لیے، ان ریسورسز کی فہرست بنائیں جنہیں آپ کی ایپ منظم کرتی ہے (users، orders، bookings)، ہر ایک کو /orders اور /orders/{id} جیسا URL دیں، اور کاموں کے لیے HTTP methods استعمال کریں: پڑھنے کے لیے GET، بنانے کے لیے POST، اپڈیٹ کے لیے PATCH، اور حذف کرنے کے لیے DELETE۔ JSON واپس کریں جس کے ساتھ بامعنی status codes ہوں، ہر ان پٹ validate کریں، سرور پر authentication اور ہر record کے لیے اجازت کی جانچ لازمی کریں، اور فہرستوں کو paginate کریں۔ پھر endpoints کی دستاویز بنائیں اور API کو HTTPS کے پیچھے deploy کریں۔

یہ گائیڈ ڈیزائن کے فیصلے، routes کی ایک عملی مثال، AI app builder کے لیے prompts، اور وہ غلطیاں بتاتی ہے جن سے سیکیورٹی کے سوراخ بنتے ہیں۔ اگر APIs آپ کے لیے نئی ہیں تو API کیا ہے سے شروع کریں۔

REST API کب چاہیے

  • آپ کے web frontend کو سرور سے ڈیٹا محفوظ اور حاصل کرنا ہو
  • کوئی mobile app، partner یا automation tool آپ کے ڈیٹا تک رسائی چاہتا ہو
  • دوسری سروسز آپ کو events بھیجیں (webhooks)
  • آپ کام کو frontend اور backend ٹیموں میں بانٹ رہے ہوں

REST سب سے عام انداز ہے، لیکن واحد انداز نہیں۔ REST بمقابلہ GraphQL بتاتا ہے کہ ایک لچکدار query endpoint کب بہتر ہے۔

پہلے ڈیزائن کریں: ریسورسز اور routes

اپنی ایپ کے اسما اور لوگ ان کے ساتھ کیا کرتے ہیں، یہ لکھ لیں۔ ایک سادہ booking ایپ کے لیے:

MethodRouteکیا کرتا ہےکامیابی کا code
GET/api/bookingsکال کرنے والے کی bookings کی فہرست (paginated)200
POST/api/bookingsنئی booking بنائیں201
GET/api/bookings/{id}ایک booking حاصل کریں200
PATCH/api/bookings/{id}کچھ fields تبدیل کریں200
DELETE/api/bookings/{id}booking منسوخ کریں204
GET/api/healthmonitoring کے لیے health check200

یہ create، read، update اور delete پر منطبق ہوتے ہیں؛ دیکھیں CRUD کیا ہے۔ یہ اصول اپنانے کے قابل ہیں:

  • URLs میں جمع اسم، فعل نہیں: /bookings، نہ کہ /getBookings۔
  • ملکیت واضح کرنے کے لیے صرف ایک سطح کا nesting: /bookings/{id}/notes۔
  • CRUD کے علاوہ کارروائیاں sub-resources ہو سکتی ہیں: POST /bookings/{id}/cancel کسی جادوئی PATCH سے واضح ہے۔
  • fields کے لیے یکساں نام، جیسے ہر جگہ created_at۔

Status codes اور errors

معیاری HTTP codes استعمال کریں تاکہ کلائنٹ متن پارس کیے بغیر جان سکے کہ کیا ہوا:

Codeمطلبکب استعمال کریں
200OKکامیاب read یا update
201CreatedPOST سے کچھ بنا
204No Contentکامیابی، واپس کرنے کو کچھ نہیں
400Bad Requestان پٹ validation میں ناکام
401Unauthorizedلاگ ان نہیں یا غلط token
403Forbiddenلاگ ان ہے مگر اجازت نہیں
404Not Foundموجود نہیں، یا کال کرنے والے کو معلوم نہیں ہونا چاہیے کہ یہ موجود ہے
409Conflictڈپلیکیٹ، یا slot پہلے ہی بک ہو چکا ہے
429Too Many Requestsrate limit پوری ہو گئی
500Server Errorآپ کی طرف سے کچھ ٹوٹ گیا

errors ایک یکساں JSON شکل میں واپس کریں، مثلاً {"error": {"code": "slot_taken", "message": "یہ وقت اب دستیاب نہیں۔"}}، اور جواب میں کبھی stack traces یا database errors شامل نہ کریں۔

اختیارات اور تجارتی فیصلے

فیصلہسادہ انتخابمتبادل
API کہاں رہےآپ کے web فریم ورک میں API routesالگ API سروس، کئی کلائنٹس یا مختلف زبان کے لیے مفید
Authenticationاپنی web ایپ کے لیے session cookiesmobile apps اور تیسرے فریق کے لیے tokens (bearer tokens یا API keys)
Pagination?page=2&limit=20cursor پر مبنی (?after=...)، بڑی اور بدلتی فہرستوں کے لیے زیادہ مستحکم
Versioningباہر کے صارف ہونے تک کوئی نہیںجب دوسرے اس پر انحصار کریں تو path میں /v1/
Docsroutes کی فہرست والا READMEOpenAPI spec، جس سے tools انٹرایکٹو docs اور client کوڈ بنا سکتے ہیں

قدم بہ قدم

  1. اوپر بتائے گئے مطابق ریسورسز اور routes کی فہرست بنائیں، جس میں یہ بھی ہو کہ ہر route کو کون کال کر سکتا ہے۔
  2. اپنے database میں ڈیٹا ماڈل کریں، جن fields اور تعلقات کی ضرورت ہے انہی کے ساتھ۔
  3. پہلے read routes بنائیں، پھر create، update اور delete۔
  4. ہر write پر schema library کے ساتھ ان پٹ validate کریں: لازمی fields، types، لمبائی، اجازت شدہ قدریں۔ نامعلوم fields رد کریں۔
  5. Authentication شامل کریں، پھر ہر record کے لیے authorisation: /bookings/42 لوڈ کرتے وقت یہ چیک ہونا چاہیے کہ booking 42 کال کرنے والے کی ہے، نہ کہ صرف یہ کہ کوئی لاگ ان ہے۔
  6. ہر فہرست کو paginate کریں اور page کا سائز محدود کریں۔
  7. لاگ ان اور مہنگے routes کی rate limit لگائیں۔ دیکھیں rate limiting۔
  8. CORS صرف اس صورت میں ترتیب دیں جب دوسرے domains کے browsers کو API کال کرنی ہو، اور وہ origins واضح طور پر لکھیں۔ CORS errors کیسے ٹھیک کریں میں وہ errors بیان ہیں جو آپ دیکھیں گے۔
  9. ہر route کے لیے docs اور tests لکھیں، ناکامی کے معاملات سمیت۔
  10. Deploy کریں، secrets environment variables میں رکھیں، HTTPS، logs اور health check کے ساتھ۔

AI builder کو دینے کے prompts

Scaffold:

bookings کے لیے یہ routes کے ساتھ REST API بناؤ: GET /api/health، GET /api/bookings (paginated، زیادہ سے زیادہ 50 فی page)، POST /api/bookings، GET /api/bookings/:id، PATCH /api/bookings/:id، DELETE /api/bookings/:id۔ ڈیٹا ہمارے database میں محفوظ کرو۔ request bodies کو schema library سے validate کرو اور نامعلوم fields رد کرو۔ errors JSON میں {"error": {"code", "message"}} کی شکل میں درست status codes (400، 401، 403، 404، 409) کے ساتھ واپس کرو۔ secrets environment variables میں رکھو۔

Security:

bookings کے ہر route پر لاگ ان لازمی کرو۔ ہر read، update اور delete پر سرور پر چیک کرو کہ booking موجودہ صارف کی ہے؛ اگر نہیں تو 404 واپس کرو۔ request body سے user IDs یا roles کبھی قبول نہ کرو۔ POST /api/bookings کو فی صارف 20 فی منٹ تک محدود کرو۔ errors سرور پر لاگ کرو اور stack traces واپس نہ کرو۔

Docs:

ان routes کی OpenAPI وضاحت لکھو، اور ہر route کے لیے مثال کی requests اور responses کے ساتھ ایک مختصر README بناؤ۔

اپنی API کی جانچ

فرنٹ اینڈ سے باہر سے ٹیسٹ کریں، کیونکہ حملہ آور بھی یہی کریں گے:

  • ہر route درست ان پٹ کے ساتھ کام کرے اور دستاویزی شکل اور code واپس کرے
  • لاپتا یا غلط fields پر واضح پیغام کے ساتھ 400 آئے
  • ہر محفوظ route پر token نہ ہونے سے 401 آئے
  • صارف A کا صارف B کا record ID سے مانگنا 404 یا 403 دے
  • فہرستیں paginated ہوں؛ بہت بڑی limit محدود ہو
  • ڈپلیکیٹ یا متضاد create پر 409 آئے، 500 نہیں
  • rate limits پر 429 آئے
  • error responses میں stack traces، SQL یا secrets نہ ہوں
  • CORS صرف ان origins کو اجازت دے جو آپ چاہتے ہیں

عام غلطیاں

  • لاگ ان چیک کرنا مگر ملکیت نہ دیکھنا۔ API کا سب سے عام سوراخ: کوئی بھی لاگ ان صارف ID بدل کر کسی بھی record کو پڑھ سکتا ہے۔
  • کلائنٹ پر بھروسہ۔ request body میں قیمتیں، roles اور user IDs تبدیل کیے جا سکتے ہیں۔
  • پورے database rows واپس کرنا۔ password hashes اور اندرونی fields لیک ہو جاتے ہیں۔ طے کریں کہ ہر response میں کیا شامل ہو۔
  • بے حد فہرستیں۔ ہر record کی ایک درخواست پوری ایپ کو سست کر سکتی ہے۔
  • جواب میں error پیغام کے ساتھ 200 OK۔ کلائنٹ اور monitoring نہیں جان سکتے کہ ناکامی ہوئی۔
  • CORS کا ہر چیز کی اجازت دینا ایک ایسی API پر جو cookies استعمال کرتی ہے۔
  • کوئی health check یا logs نہیں، اس لیے outages کا علم صارفین کی شکایت سے ہوتا ہے۔

لانچ سے پہلے وسیع جائزے کے لیے، دیکھیں AI سے بنی ایپس کی سیکیورٹی چیک لسٹ۔

Mythex میں REST API بنانا

آپ Mythex سے اپنی ایپ کے حصے کے طور پر یا علیحدہ سروس کے طور پر API مانگ سکتے ہیں۔ docs کی recipe REST API backend میں ایک starter prompt ہے: اپنا فریم ورک اور routes بتائیں، واضح JSON errors مانگیں، secrets environment variables میں رکھیں، اور Dockerfile شامل کریں۔ Node، Python، C#، Java اور دیگر میں container backends Dockerfile کے ذریعے publish ہوتے ہیں، اور Mythex Publish سے deploy سنبھالتا ہے (API backends)۔ ایک پروجیکٹ ساتھ ساتھ website اور API server چلا سکتا ہے، اور آپ preview میں ان کے درمیان سوئچ کر سکتے ہیں۔ Project secrets کے طور پر keys محفوظ کریں، اور اگر API کو database چاہیے تو چیٹ میں مانگیں۔ API کے گرد scheduled کام کے لیے، دیکھیں background jobs کیسے چلائیں۔

سوالات

REST API کیا ہے؟

REST API وہ طریقہ ہے جس سے پروگرامز HTTP کے ذریعے آپ کی ایپ کے ڈیٹا کے ساتھ کام کرتے ہیں۔ ہر قسم کا ڈیٹا ایک ریسورس ہوتا ہے جس کا اپنا URL ہوتا ہے، جیسے /orders، اور معیاری methods اس پر عمل کرتے ہیں: پڑھنے کے لیے GET، بنانے کے لیے POST، اپڈیٹ کے لیے PATCH یا PUT، اور حذف کرنے کے لیے DELETE۔ ڈیٹا عموماً JSON میں بھیجا جاتا ہے۔

REST API کس زبان میں بنانا چاہیے؟

وہ زبان استعمال کریں جسے آپ یا آپ کی ٹیم سنبھال سکے۔ Express یا Fastify کے ساتھ Node.js، FastAPI کے ساتھ Python، اور C# یا Java کے فریم ورک سب اچھے کام کرتے ہیں۔ routes، status codes، validation اور authentication کے ڈیزائن کے اصول زبان سے زیادہ اہم ہیں۔

REST API کو محفوظ کیسے بنائیں؟

ہر غیر عوامی route پر authentication لازمی کریں، سرور پر چیک کریں کہ کال کرنے والا ہر مخصوص record تک رسائی رکھتا ہے، تمام ان پٹ validate کریں، HTTPS استعمال کریں، درخواستوں کی rate محدود کریں، اور secrets کو environment variables میں رکھیں۔ کلائنٹ کی طرف سے بھیجے گئے IDs یا roles پر کبھی بھروسہ نہ کریں۔

کیا REST API کے لیے الگ backend چاہیے؟

ہمیشہ ضروری نہیں۔ Next.js جیسے فریم ورک pages کے ساتھ API routes بھی چلا سکتے ہیں۔ الگ API سروس اس وقت بہتر ہے جب کئی کلائنٹس (web، mobile، partners) اسے استعمال کریں، یا جب اسے اپنی زبان یا اپنی scaling کی ضرورت ہو۔

Mythex · Pricing · AI کے ساتھ کچھ بھی بنائیں · ویب سائٹ اور ایپ ٹیمپلیٹس · Mythex کا موازنہ · AI سے ایپ بنانے کی اصطلاحات · 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 Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)