HTTP Client Library — اردو/کرل
The اردو/کرل library provides an async HTTP client for making web requests — GET, POST, file uploads, REST APIs, and more — using Urdu-named methods.
اردو:
اردو/کرللائبریری اردو نام والے طریقوں سے ویب درخواستیں (GET، POST، فائل اپلوڈ، REST APIs) بھیجنے کے لیے ایک غیر متزامن HTTP کلائنٹ فراہم کرتی ہے۔
Import:
Table of Contents
Constructor and Configuration — تعمیر کنندہ اور ترتیب
اردو: تعمیر کنندہ ایک اختیاری ترتیب آبجیکٹ قبول کرتا ہے۔ آپ پہلے سے طے شدہ سرخیاں، ختمی مدت (seconds میں)، بنیادی URL، SSL بندی، پراکسی اور خودکار ری ڈائریکٹ ترتیب دے سکتے ہیں۔
All configuration keys are optional:
| Option | Type | Default | Description |
|---|---|---|---|
سرخط |
dict | {} |
Default headers sent with every request |
ختمی |
int | 30 |
Timeout in seconds |
بنیادی_url |
string | "" |
Base URL prepended to all paths |
تصدیق_نہ_کرو |
bool | جھوٹ |
Disable SSL certificate verification |
پراکسی |
string | null |
Proxy URL, e.g. "http://proxy:8080" |
ری_ڈائریکٹ |
bool | سچ |
Follow HTTP redirects automatically |
Basic client:
Client with base URL and default headers:
متغیر http = نیا کرل({
بنیادی_url: "https://api.example.com",
سرخط: {
"Content-Type": "application/json",
"Accept": "application/json"
},
ختمی: 15
})
Request Methods — درخواست طریقے
All methods are async — use انتظار inside an غیر_متزامن function, or at the top level of an async script.
اردو: تمام طریقے غیر متزامن ہیں —
غیر_متزامنفنکشن کے اندرانتظاراستعمال کریں۔ GET سے ڈیٹا حاصل کریں، POST سے بھیجیں، PUT سے تبدیل کریں، DELETE سے مٹائیں اورفائل_بھیجوسے ملٹی پارٹ فائل اپلوڈ کریں۔
| Method | HTTP verb | Description |
|---|---|---|
http.حاصل(url, پیرامیٹر={}, سرخط={}) |
GET | Fetch a resource |
http.بھیجو(url, ڈیٹا={}, سرخط={}) |
POST | Send JSON body |
http.فارم_بھیجو(url, ڈیٹا={}) |
POST | Send form-encoded body |
http.تازہ(url, ڈیٹا={}) |
PUT | Replace a resource |
http.جزوی_تازہ(url, ڈیٹا={}) |
PATCH | Partially update a resource |
http.مٹاؤ(url) |
DELETE | Delete a resource |
http.سر(url) |
HEAD | Fetch headers only |
http.اختیارات(url) |
OPTIONS | Fetch allowed methods |
http.فائل_بھیجو(url, فائل_راستہ, خانہ="file", اضافی_ڈیٹا={}) |
POST multipart | Upload a file |
Response Object — _کرل_جواب — جواب آبجیکٹ
Every request method returns a _کرل_جواب object.
اردو: ہر درخواست طریقہ ایک
_کرل_جوابآبجیکٹ واپس کرتا ہے۔.حالتسے HTTP حالت رمز،.متنسے جواب متن،.جے_سون()سے JSON پارس کریں اور.ٹھیکسے جانچیں کہ درخواست کامیاب تھی یا نہیں۔
| Property / Method | Type | Description |
|---|---|---|
.حالت |
int | HTTP status code (e.g. 200, 404) |
.متن |
string | Response body as text |
.مواد |
bytes | Response body as raw bytes |
.سرخط |
dict | Response headers |
.ٹھیک |
bool | سچ when status code < 400 |
.ربط |
string | Final URL after redirects |
.جے_سون() |
any | Parse body as JSON → object/list |
Examples — مثالیں
Example 1 — Simple GET request and JSON parsing — سادہ GET درخواست
اردو: یہ مثال سادہ GET درخواست اور JSON پارسنگ دکھاتی ہے۔
http.حاصل()سے URL پر GET درخواست بھیجیں، پھر.جے_سون()سے جواب کو JSON میں بدلیں۔
درآمد { کرل } سے "اردو/کرل"
متغیر http = نیا کرل()
غیر_متزامن فنکشن مرکزی() {
متغیر جواب = انتظار http.حاصل("https://jsonplaceholder.typicode.com/posts/1");
اگر (جواب.ٹھیک) {
متغیر ڈیٹا = جواب.جے_سون();
لکھو("عنوان:", ڈیٹا.title);
لکھو("متن:", ڈیٹا.body);
لکھو("شناخت:", ڈیٹا.id);
} ورنہ {
لکھو("غلطی:", جواب.حالت);
}
}
انتظار مرکزی();
Example 2 — GET with query parameters — سوال پیرامیٹرز کے ساتھ GET
اردو: GET درخواست میں
پیرامیٹر: {...}دیں تاکہ سوال پیرامیٹرز URL میں شامل ہوں۔ مثلاً GitHub API پر ذخیرے تلاش کرنا۔
درآمد { کرل } سے "اردو/کرل"
متغیر http = نیا کرل()
غیر_متزامن فنکشن تلاش_کریں(عبارت) {
متغیر جواب = انتظار http.حاصل(
"https://api.github.com/search/repositories",
پیرامیٹر: { q: عبارت, sort: "stars", per_page: 5 }
);
متغیر نتیجہ = جواب.جے_سون();
لکھو(`"${عبارت}" کے لیے ${نتیجہ.total_count} ذخیرے ملے:`);
کے_لیے (متغیر ریپو کا نتیجہ.items) {
لکھو(` ★ ${ریپو.stargazers_count} ${ریپو.full_name}`);
}
}
انتظار تلاش_کریں("اردو پروگرامنگ");
Example 3 — POST with JSON body — JSON باڈی کے ساتھ POST
اردو: JSON باڈی کے ساتھ POST درخواست بھیجنے کے لیے
http.بھیجو(url, ڈیٹا: {...})استعمال کریں۔ سرور سے201 Createdجواب ملنے پر نیا ریکارڈ کامیابی سے بنا۔
درآمد { کرل } سے "اردو/کرل"
متغیر http = نیا کرل({
سرخط: { "Content-Type": "application/json" }
})
غیر_متزامن فنکشن نئی_پوسٹ_بنائیں() {
متغیر پیغام = {
title: "اردو پروگرامنگ کا تعارف",
body: "یہ زبان اردو میں کوڈ لکھنے کی سہولت دیتی ہے۔",
userId: 1
};
متغیر جواب = انتظار http.بھیجو(
"https://jsonplaceholder.typicode.com/posts",
ڈیٹا: پیغام
);
اگر (جواب.حالت == 201) {
متغیر بنائی_گئی = جواب.جے_سون();
لکھو("نئی پوسٹ ID:", بنائی_گئی.id);
} ورنہ {
لکھو("بنانے میں ناکامی، کوڈ:", جواب.حالت);
}
}
انتظار نئی_پوسٹ_بنائیں();
Example 4 — Authenticated API calls — تصدیق شدہ API کالز
اردو: تصدیق شدہ API کالز کے لیے ٹوکن کو پہلے سے طے شدہ سرخیوں میں
Authorizationکے طور پر رکھیں۔ پھر تمام درخواستیں خودبخود یہ سرخی لے جائیں گی۔
درآمد { کرل } سے "اردو/کرل"
مستقل ٹوکن = "Bearer ghp_xxxxxxxxxxxxxxxxxxxx"
متغیر http = نیا کرل({
بنیادی_url: "https://api.github.com",
سرخط: {
"Authorization": ٹوکن,
"Accept": "application/vnd.github+json"
}
})
غیر_متزامن فنکشن صارف_معلومات() {
متغیر جواب = انتظار http.حاصل("/user");
متغیر صارف = جواب.جے_سون();
لکھو("صارف نام:", صارف.login);
لکھو("نام:", صارف.name);
لکھو("ای میل:", صارف.email);
}
غیر_متزامن فنکشن ذخیرے_دیکھیں() {
متغیر جواب = انتظار http.حاصل("/user/repos", پیرامیٹر: { per_page: 10 });
کے_لیے (متغیر ذخیرہ کا جواب.جے_سون()) {
لکھو(` 📁 ${ذخیرہ.full_name} (${ذخیرہ.stargazers_count} ستارے)`);
}
}
انتظار صارف_معلومات();
انتظار ذخیرے_دیکھیں();
Example 5 — File upload — فائل اپلوڈ
اردو: فائل اپلوڈ کرنے کے لیے
http.فائل_بھیجو()استعمال کریں۔ فائل کا راستہ، خانے کا نام اور اضافی ڈیٹا دیں۔ ختمی مدت60سیکنڈ رکھیں کیونکہ بڑی فائلیں زیادہ وقت لیتی ہیں۔
درآمد { کرل } سے "اردو/کرل"
متغیر http = نیا کرل({ ختمی: 60 })
غیر_متزامن فنکشن تصویر_اپلوڈ(فائل_راستہ) {
لکھو("فائل اپلوڈ ہو رہی ہے:", فائل_راستہ);
متغیر جواب = انتظار http.فائل_بھیجو(
"https://api.example.com/upload",
فائل_راستہ,
خانہ: "image",
اضافی_ڈیٹا: { عنوان: "میری تصویر", الگورتھم: "اردو" }
);
اگر (جواب.ٹھیک) {
متغیر نتیجہ = جواب.جے_سون();
لکھو("اپلوڈ کامیاب!");
لکھو("URL:", نتیجہ.url);
} ورنہ {
لکھو("اپلوڈ ناکام:", جواب.حالت, جواب.متن);
}
}
انتظار تصویر_اپلوڈ("تصاویر/پروفائل.jpg");
Example 6 — Full REST API CRUD — مکمل REST API CRUD
اردو: یہ مثال مکمل CRUD عمل دکھاتی ہے:
بھیجوسے بنانا،حاصلسے پڑھنا،جزوی_تازہسے جزوی تازہ کاری اورمٹاؤسے حذف کرنا — سببنیادی_urlکے ساتھ مختصر راستوں پر۔
درآمد { کرل } سے "اردو/کرل"
// ═══════════════════════════════════════════════
// REST API — Todo فہرست کا مکمل انتظام
// ═══════════════════════════════════════════════
مستقل API = "https://jsonplaceholder.typicode.com"
متغیر http = نیا کرل({
بنیادی_url: API,
سرخط: { "Content-Type": "application/json" }
})
// CREATE — نئی todo شامل کریں
غیر_متزامن فنکشن todo_بنائیں(عنوان) {
متغیر جواب = انتظار http.بھیجو("/todos", ڈیٹا: {
title: عنوان,
completed: جھوٹ,
userId: 1
});
متغیر todo = جواب.جے_سون();
لکھو("بنائی گئی todo ID:", todo.id);
واپس todo;
}
// READ — تمام todos پڑھیں
غیر_متزامن فنکشن todos_پڑھیں() {
متغیر جواب = انتظار http.حاصل("/todos", پیرامیٹر: { _limit: 5 });
کے_لیے (متغیر todo کا جواب.جے_سون()) {
متغیر علامت = todo.completed ? "✓" : "○";
لکھو(` ${علامت} [${todo.id}] ${todo.title}`);
}
}
// UPDATE — todo مکمل کریں
غیر_متزامن فنکشن todo_مکمل_کریں(id) {
متغیر جواب = انتظار http.جزوی_تازہ(`/todos/${id}`, ڈیٹا: {
completed: سچ
});
متغیر todo = جواب.جے_سون();
لکھو(`Todo ${id} مکمل:`, todo.completed);
}
// DELETE — todo مٹائیں
غیر_متزامن فنکشن todo_مٹائیں(id) {
متغیر جواب = انتظار http.مٹاؤ(`/todos/${id}`);
اگر (جواب.ٹھیک) {
لکھو(`Todo ${id} مٹا دیا گیا`);
} ورنہ {
لکھو("مٹانے میں ناکامی");
}
}
// ── چلائیں ──────────────────────────────────
غیر_متزامن فنکشن مرکزی() {
لکھو("=== Todo مینیجر ===\n");
لکھو("موجودہ todos:");
انتظار todos_پڑھیں();
لکھو("\nنئی todo بنا رہے ہیں...");
متغیر نئی = انتظار todo_بنائیں("اردو پروگرامنگ سیکھنا");
لکھو("\nTodo مکمل کر رہے ہیں...");
انتظار todo_مکمل_کریں(1);
لکھو("\nTodo مٹا رہے ہیں...");
انتظار todo_مٹائیں(2);
}
انتظار مرکزی();
Example 7 — Parallel requests — متوازی درخواستیں
اردو:
Promise.all([...])سے متعدد درخواستیں بیک وقت بھیجیں۔ یہ ترتیب وار بھیجنے سے بہت تیز ہے — تمام درخواستیں ایک ساتھ چلتی ہیں اور سب کا انتظار ایک بار ہوتا ہے۔
درآمد { کرل } سے "اردو/کرل"
متغیر http = نیا کرل()
غیر_متزامن فنکشن ڈیٹا_اکٹھا_کریں() {
// تمام درخواستیں بیک وقت بھیجیں
متغیر [صارفین_ج, پوسٹس_ج, تبصرے_ج] = انتظار Promise.all([
http.حاصل("https://jsonplaceholder.typicode.com/users"),
http.حاصل("https://jsonplaceholder.typicode.com/posts?_limit=5"),
http.حاصل("https://jsonplaceholder.typicode.com/comments?_limit=3")
]);
لکھو("صارفین:", صارفین_ج.جے_سون().length);
لکھو("پوسٹیں:", پوسٹس_ج.جے_سون().length);
لکھو("تبصرے:", تبصرے_ج.جے_سون().length);
}
انتظار ڈیٹا_اکٹھا_کریں();
Example 8 — Error handling — غلطی ہینڈلنگ
اردو: درخواست میں غلطیاں
کوشش/پکڑوسے سنبھالیں۔.حالت == 404سے نہ ملنے کی جانچ کریں،.ٹھیکسے کامیابی جانچیں اورtimeoutغلطی کو علیحدہ پکڑیں۔ یہ نمونہ محفوظ اور مضبوط HTTP کالز کا بہترین طریقہ ہے۔
درآمد { کرل } سے "اردو/کرل"
متغیر http = نیا کرل({ ختمی: 5 })
غیر_متزامن فنکشن محفوظ_درخواست(url) {
کوشش {
متغیر جواب = انتظار http.حاصل(url);
اگر (جواب.حالت == 404) {
لکھو("صفحہ نہیں ملا:", url);
واپس خالی;
}
اگر (نہیں (جواب.ٹھیک)) {
لکھو(`HTTP غلطی ${جواب.حالت}:`, جواب.متن);
واپس خالی;
}
واپس جواب.جے_سون();
} پکڑو (غلطی) {
اگر (غلطی.message.includes("timeout")) {
لکھو("مدت ختم — سرور جواب نہیں دے رہا");
} ورنہ {
لکھو("نیٹ ورک غلطی:", غلطی.message);
}
واپس خالی;
}
}
متغیر نتیجہ = انتظار محفوظ_درخواست("https://httpstat.us/404");
لکھو("نتیجہ:", نتیجہ);
Previous: ML → | Next: Web Scraper →