request মডিউল
Axios-স্টাইল HTTP client। প্রতিটি verb Future ফেরত দেয় — straight-line কোডের জন্য wait-এর সাথে ব্যবহার। প্রতিটি call-এ optional config map (headers/params/timeout ইত্যাদি)। JSON ও form body auto-encode। Connection pooling, before/after interceptor, ফাইল upload/download।
import "request" as r;
function main() {
var resp = wait r.get("https://api.example.com/users/1");
print(resp.status, resp.body);
var created = wait r.post(
"https://api.example.com/users",
{ name: "Alice" }, // auto-JSON
{ headers: { "X-Trace": "abc" }, timeout: 5000 }
);
print("created id:", created.data.id);
}
main().fail(function (e) { print("err:", e); });
Verb শর্টকাট
প্রতিটি verb optional config map নেয় (headers, params, timeout ইত্যাদি)। verb-এর URL, method, এবং body সবসময় config-এর উপরে — config additive।
| ফাংশন | বর্ণনা |
|---|---|
r.get(url, config?) | Future<resp> ফেরত দেয়। |
r.head(url, config?) | |
r.delete(url, config?) | |
r.post(url, data, config?) | data string (raw body) বা map (auto-JSON)। |
r.put(url, data, config?) | |
r.patch(url, data, config?) | |
r.post_form(url, fields, config?) | URL-encoded form। |
r.request(config) | পূর্ণ option ফর্ম। |
Config key
| Key | বর্ণনা |
|---|---|
headers | Header name → value map। |
params | Query string-এ serialize হয়। |
timeout | Millisecond। অতিক্রম করলে timeout error দিয়ে reject। |
json | Map — JSON body (Content-Type auto)। |
form | Map — application/x-www-form-urlencoded। |
body | Raw string body। Content-Type নিজে সেট করুন। |
data | Smart: map → JSON, string → text/plain। |
pool | Keep-alive pool ব্যবহার করতে true। |
tls | TLS option (যেমন self-signed-এর জন্য {verify: false})। |
base_url | (শুধু instance) relative URL-এ prepend। |
Instance
var api = r.create({
base_url: "https://api.example.com",
headers: { "Authorization": "Bearer " + token }
});
var users = wait api.get("/users", { params: { limit: 10 } });
| ফাংশন | বর্ণনা |
|---|---|
r.create(defaults) → instance | Base URL, default header/timeout ইত্যাদি। |
r.before(fn) / api.before(fn) | before(cfg) → cfg — পাঠানোর আগে config পরিবর্তন। |
r.after(fn) / api.after(fn) | after(resp) → resp — ফেরতের আগে response পরিবর্তন। |
ফাইল ট্রান্সফার
| ফাংশন | বর্ণনা |
|---|---|
r.download(url, dest, config?) → Future | ফাইলে stream। {status, headers, dest, bytes_written, ok} দিয়ে resolve। |
r.upload(url, file, config?) → Future | Multipart POST। file path string বা spec map। Extra field: config.fields। |
Connection pool
scheme://host:port প্রতি keep-alive pool। প্রতি call-এ config.pool: true দিয়ে বা r.create({...pool: true}) দিয়ে। প্রসেস শেষে clean drain-এর জন্য r.shutdown()।
Response object
resp-এ থাকে: status, headers (lowercased), body, data (JSON হলে parsed), ok (2xx?), json() (on-demand re-parse)।
4xx/5xx response Future fulfill করে (resp.ok=false পাবেন)। শুধু transport-level error-এ (DNS, TCP, TLS, timeout) reject হয়।