3. HTTP Client — کرل
Difficulty: Advanced — اعلیٰ
Time: ~25 minutes
Importing — درآمد
اردو:
کرلHTTP مؤکل ہے۔ تمام طریقےغیر_متزامن(async) ہیں —انتظارکے ساتھ استعمال کریں۔
GET Request — ڈیٹا حاصل کریں
All HTTP methods are async — they must be called inside an async function with انتظار:
غیر_متزامن فنکشن مرکزی() {
متغیر جواب = انتظار کرل_حاصل("https://httpbin.org/get");
لکھو(جواب.حالت); // 200
لکھو(جواب.ٹھیک); // True (2xx = success)
لکھو(جواب.متن); // full response body
}
انتظار مرکزی();
With query params — پیرامیٹر کے ساتھ:
غیر_متزامن فنکشن مرکزی() {
متغیر جواب = انتظار کرل_حاصل(
"https://httpbin.org/get",
پیرامیٹر={ q: "اردو", صفحہ: 1 }
);
لکھو(جواب.حالت); // 200
لکھو(جواب.ربط); // shows full URL with query string
}
انتظار مرکزی();
Response Properties — جواب کی خصوصیات
| Property | Type | Description |
|---|---|---|
.حالت |
int | HTTP status code (200, 404, …) |
.ٹھیک |
bool | سچ if status < 400 |
.متن |
str | Response body as text |
.مواد |
bytes | Response body as raw bytes |
.سرخط |
dict | Response headers |
.ربط |
str | Final URL (after redirects) |
.جے_سون() |
obj/list | Parse JSON body |
JSON API Calls — جے سان API
غیر_متزامن فنکشن صارف_حاصل(شناخت) {
متغیر جواب = انتظار کرل_حاصل(
`https://jsonplaceholder.typicode.com/users/${شناخت}`
);
اگر (نہیں جواب.ٹھیک) {
لکھو(`غلطی: ${جواب.حالت}`);
واپس خالی;
}
متغیر ڈیٹا = جواب.جے_سون();
لکھو(`نام: ${ڈیٹا.name}`);
لکھو(`ای میل: ${ڈیٹا.email}`);
واپس ڈیٹا;
}
انتظار صارف_حاصل(1);
POST Request — ڈیٹا بھیجیں
Pass a dict — it's automatically sent as JSON:
غیر_متزامن فنکشن نئی_پوسٹ_بنائیں() {
متغیر جواب = انتظار بھیجو_کرو(
"https://jsonplaceholder.typicode.com/posts",
{ عنوان: "اردو ٹیسٹ", مواد: "یہ ایک پوسٹ ہے", userId: 1 }
);
لکھو(جواب.حالت); // 201
لکھو(جواب.جے_سون());
}
انتظار نئی_پوسٹ_بنائیں();
PUT and PATCH — تازہ کاری
غیر_متزامن فنکشن تازہ_کاری() {
// Full replace (PUT)
متغیر جواب_پ = انتظار تازہ_کرو(
"https://jsonplaceholder.typicode.com/posts/1",
{ عنوان: "نیا عنوان", مواد: "نیا مواد", userId: 1 }
);
لکھو(جواب_پ.حالت); // 200
// Partial update (PATCH)
متغیر جواب_ج = انتظار جزوی_تازہ_کرو(
"https://jsonplaceholder.typicode.com/posts/1",
{ عنوان: "صرف عنوان بدلا" }
);
لکھو(جواب_ج.حالت); // 200
}
انتظار تازہ_کاری();
DELETE Request — حذف کریں
غیر_متزامن فنکشن حذف_کریں(شناخت) {
متغیر جواب = انتظار مٹاؤ_کرو(
`https://jsonplaceholder.typicode.com/posts/${شناخت}`
);
لکھو(جواب.حالت); // 200
لکھو(جواب.ٹھیک); // True
}
انتظار حذف_کریں(1);
کرل Class — Advanced Use
For multiple requests, create a کرل instance to share headers, auth, and base URL:
متغیر کلائنٹ = نیا کرل({
بنیادی_url: "https://api.example.com",
سرخط: { "Content-Type": "application/json" },
ختمی: 15
});
غیر_متزامن فنکشن استعمال() {
متغیر جواب = انتظار کلائنٹ.حاصل("/users");
لکھو(جواب.حالت);
کلائنٹ.سیشن_بند();
}
انتظار استعمال();
Authentication — توثیق
// Bearer token
کلائنٹ.ٹوکن_مقرر("your-jwt-token-here");
// Basic auth
کلائنٹ.بنیادی_توثیق("صارف_نام", "پاس_ورڈ");
// API key header
کلائنٹ.کلید_توثیق("X-API-Key", "your-api-key");
// Custom header
کلائنٹ.سرخط_مقرر("Accept", "application/json");
Custom Headers Per Request — درخواست کے مخصوص سرخط
غیر_متزامن فنکشن مرکزی() {
متغیر جواب = انتظار کلائنٹ.حاصل(
"/data",
سرخط={ "X-Request-ID": "abc123" }
);
لکھو(جواب.حالت);
}
انتظار مرکزی();
File Upload & Download — فائل اپلوڈ و ڈاؤن لوڈ
// Upload
غیر_متزامن فنکشن اپلوڈ() {
متغیر جواب = انتظار کلائنٹ.فائل_بھیجو(
"/upload",
"تصویر.png",
خانہ="image"
);
لکھو(جواب.حالت);
}
// Download
غیر_متزامن فنکشن ڈاؤن لوڈ() {
متغیر جواب = انتظار کلائنٹ.فائل_حاصل(
"/report.pdf",
"رپورٹ.pdf"
);
لکھو(`محفوظ ہوگیا: ${جواب.ٹھیک}`);
}
انتظار اپلوڈ();
انتظار ڈاؤن لوڈ();
Practical Example: JSON API Client — عملی مثال
درآمد { کرل } سے "اردو/کرل";
متغیر API = نیا کرل({ بنیادی_url: "https://jsonplaceholder.typicode.com" });
غیر_متزامن فنکشن پوسٹیں_حاصل(صفحہ = 1) {
متغیر جواب = انتظار API.حاصل("/posts", پیرامیٹر={ _page: صفحہ, _limit: 5 });
اگر (نہیں جواب.ٹھیک) {
پھینکو نیا غلطی(`HTTP ${جواب.حالت}`);
}
واپس جواب.جے_سون();
}
غیر_متزامن فنکشن مرکزی() {
کوشش {
متغیر پوسٹیں = انتظار پوسٹیں_حاصل(1);
کے_لیے (متغیر پوسٹ میں پوسٹیں) {
لکھو(`[${پوسٹ.id}] ${پوسٹ.title}`);
}
} پکڑو (غلطی_م) {
لکھو(`غلطی: ${غلطی_م.message}`);
} آخر {
API.سیشن_بند();
}
}
انتظار مرکزی();
Quick Reference — فوری حوالہ
| Function / Method | Description |
|---|---|
کرل_حاصل(url, پیرامیٹر=) |
Quick GET |
بھیجو_کرو(url, ڈیٹا) |
Quick POST with JSON body |
تازہ_کرو(url, ڈیٹا) |
Quick PUT |
جزوی_تازہ_کرو(url, ڈیٹا) |
Quick PATCH |
مٹاؤ_کرو(url) |
Quick DELETE |
کرل.حاصل(url) |
GET on instance |
کرل.بھیجو(url, dict) |
POST JSON on instance |
کرل.فائل_بھیجو(url, path) |
Multipart file upload |
کرل.فائل_حاصل(url, path) |
Stream download to file |
کرل.ٹوکن_مقرر(token) |
Set Bearer token |
کرل.بنیادی_توثیق(u, p) |
Set Basic auth |
کرل.سیشن_بند() |
Close session |