Curl کو JavaScript کنورٹر

curl کمانڈز کو JavaScript کوڈ میں تبدیل کریں - API ریکویسٹس کے لیے استعمال کے لیے تیار JavaScript fetch/axios کوڈ تیار کریں

رازداری کا نوٹس: یہ پروفیشنل ٹول انٹرپرائز گریڈ رازداری کے تحفظ کے ساتھ JavaScript کوڈ میں محفوظ تبدیلی فراہم کرتا ہے۔ ہم آپ کے جمع کردہ کسی بھی ڈیٹا کو ذخیرہ نہیں کرتے، جس سے آپ کے API ڈویلپمنٹ کام کی مکمل رازداری یقینی بنتی ہے۔

JavaScript کوڈ جنریٹر

// JavaScript code will appear here
// Example:
// Using fetch API
fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'test'
  })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

JavaScript API ٹیسٹنگ کے لیے عام curl کمانڈز

یہاں کچھ عام curl کمانڈز ہیں جنہیں آپ JavaScript کوڈ میں تبدیل کر سکتے ہیں:

JavaScript Fetch اور Axios مثالیں

JavaScript HTTP ریکویسٹس بنانے کے متعدد طریقے پیش کرتا ہے۔ یہاں Fetch API اور Axios دونوں کا استعمال کرتے ہوئے عام پیٹرنز ہیں:

JavaScript Fetch کے ساتھ فائل اپلوڈ

const formData = new FormData();
formData.append('file', document.querySelector('#fileInput').files[0]);

fetch('https://api.example.com/upload', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN_HERE'
  },
  body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

ٹائم آؤٹ اور ایرر ہینڈلنگ کے ساتھ JavaScript Fetch

const controller = new AbortController();
const signal = controller.signal;

// Set timeout of 5 seconds
const timeoutId = setTimeout(() => controller.abort(), 5000);

fetch('https://api.example.com/data', {
  method: 'GET',
  signal: signal
})
.then(response => {
  if (!response.ok) {
    throw new Error(`HTTP error! Status: ${response.status}`);
  }
  clearTimeout(timeoutId);
  return response.json();
})
.then(data => console.log(data))
.catch(error => {
  if (error.name === 'AbortError') {
    console.error('Request timed out');
  } else {
    console.error('Error:', error);
  }
});

JavaScript کوڈ کنورٹر کا استعمال کیسے کریں

1. بنیادی استعمال

اپنی curl کمانڈ کاپی کریں → ان پٹ باکس میں پیسٹ کریں → فوری طور پر JavaScript کوڈ حاصل کریں

2. مناسب ایرر ہینڈلنگ کو نافذ کریں

axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    if (error.response) {
      // Server returned an error status code
      console.error(`Server error: ${error.response.status}`);
      console.error(error.response.data);
    } else if (error.request) {
      // Request was made but no response received
      console.error('Network error - no response received');
    } else {
      // Error in request setup
      console.error('Request error:', error.message);
    }
  });

3. بہتر UX کے لیے ریکویسٹ کینسلیشن کا استعمال کریں

// Using fetch with AbortController
const controller = new AbortController();
const signal = controller.signal;

// Cancel request after 5 seconds
setTimeout(() => controller.abort(), 5000);

fetch('https://api.example.com/data', { signal })
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => {
    if (error.name === 'AbortError') {
      console.log('Request was cancelled');
    } else {
      console.error('Error:', error);
    }
  });

// Using axios with CancelToken
const source = axios.CancelToken.source();

// Cancel request after 5 seconds
setTimeout(() => {
  source.cancel('User cancelled the request');
}, 5000);

axios.get('https://api.example.com/data', {
  cancelToken: source.token
})
.then(response => console.log(response.data))
.catch(error => {
  if (axios.isCancel(error)) {
    console.log('Request cancelled:', error.message);
  } else {
    console.error('Error:', error);
  }
});

JavaScript HTTP ریکویسٹس کے بارے میں اکثر پوچھے گئے سوالات

سوال: JavaScript کی fetch API curl سے کیسے مختلف ہے؟

جواب: جبکہ curl HTTP ریکویسٹس بنانے کے لیے ایک کمانڈ لائن ٹول ہے، JavaScript کی fetch API ویب براؤزرز اور Node.js کے اندر ایک پروگراماٹک انٹرفیس فراہم کرتی ہے۔ Fetch غیر ہمزمان آپریشنز کو سنبھالنے کے لیے Promises کا استعمال کرتا ہے، جبکہ curl ہمزمان طور پر چلتا ہے۔ اس کے علاوہ، fetch خودکار طور پر ریڈائریکٹس کی پیروی کرتا ہے اور ڈیفالٹ طور پر کوکیز نہیں بھیجتا، جبکہ curl دونوں کرتا ہے جب تک کہ دوسری صورت میں کنفیگر نہ کیا جائے۔

سوال: fetch اور axios کے درمیان کلیدی فرق کیا ہیں؟

جواب: Fetch جدید براؤزرز میں بلٹ-ان ہے لیکن ایرر ہینڈلنگ کے لیے زیادہ بوائلر پلیٹ کی ضرورت ہوتی ہے اور خودکار طور پر JSON ریسپانسز کو پارس نہیں کرتا۔ Axios ایک لائبریری ہے جو خودکار JSON پارسنگ، بہتر ایرر ہینڈلنگ، ریکویسٹ/ریسپانس انٹرسیپشن، اور بلٹ-ان ریکویسٹ کینسلیشن کے ساتھ ایک زیادہ فیچر-امیر API فراہم کرتی ہے۔ Axios براؤزرز اور Node.js ماحول میں بھی مستقل طور پر کام کرتا ہے۔

سوال: میں curl کمانڈز کو JavaScript میں تبدیل کرتے وقت CORS مسائل کو کیسے سنبھالوں؟

جواب: CORS (کراس-اوریجن ریسورس شیئرنگ) کی پابندیاں براؤزر پر مبنی JavaScript پر لاگو ہوتی ہیں لیکن curl پر نہیں۔ curl کمانڈز کو JavaScript میں تبدیل کرتے وقت، آپ کو CORS ایررز کا سامنا ہو سکتا ہے اگر سرور مناسب CORS ہیڈرز شامل نہیں کرتا۔ حل میں شامل ہیں: CORS پراکسی کا استعمال، API مالک سے CORS ہیڈرز کو فعال کرنے کی درخواست، اپنی ایپلیکیشن میں سرور-سائیڈ پراکسی کو نافذ کرنا، یا ایسی ریکویسٹس کے لیے Node.js کا استعمال کرنا جو براؤزر میں نہیں چلتیں۔

سوال: میں JavaScript میں curl کے -k/--insecure فلیگ کی نقل کیسے کر سکتا ہوں؟

جواب: براؤزر پر مبنی JavaScript میں، آپ SSL سرٹیفکیٹ ویریفیکیشن کو بائی پاس نہیں کر سکتے کیونکہ یہ براؤزرز کے ذریعے نافذ کردہ ایک سیکیورٹی فیچر ہے۔ Node.js میں، آپ HTTPS ایجنٹ کنفیگریشن میں rejectUnauthorized: false آپشن سیٹ کر سکتے ہیں۔ تاہم، یہ پروڈکشن میں سختی سے غیر مستحسن ہے کیونکہ یہ سیکیورٹی کو خطرے میں ڈالتا ہے۔ مثال: const https = require('https'); const agent = new https.Agent({rejectUnauthorized: false});

سوال: میں JavaScript میں curl کے -F فلیگ کی طرح فائل اپلوڈز کو کیسے سنبھالوں؟

جواب: JavaScript میں curl کے -F فلیگ کی طرح فائل اپلوڈز کو سنبھالنے کے لیے، FormData API کا استعمال کریں۔ مثال کے طور پر: const formData = new FormData(); formData.append('file', fileInput.files[0]); formData.append('field', 'value'); fetch('https://api.example.com/upload', { method: 'POST', body: formData }); یہ طریقہ fetch اور axios دونوں کے ساتھ کام کرتا ہے۔

سوال: میں JavaScript میں curl کے --connect-timeout کی طرح ریکویسٹ ٹائم آؤٹس کیسے سیٹ کروں؟

جواب: fetch API کے ساتھ، AbortController کو setTimeout کے ساتھ استعمال کریں: const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), 5000); fetch(url, { signal: controller.signal }); axios کے ساتھ، timeout آپشن کا استعمال کریں: axios.get(url, { timeout: 5000 }); دونوں طریقے آپ کو کنٹرول کرنے کی اجازت دیتے ہیں کہ ریکویسٹ کو منسوخ کرنے سے پہلے کتنا انتظار کرنا ہے۔

سوال: میں JavaScript میں curl کے verbose موڈ کے مقابلے میں نیٹ ورک ریکویسٹس کو کیسے ڈیبگ کروں؟

جواب: جبکہ curl تفصیلی ریکویسٹ/ریسپانس معلومات کے لیے -v/--verbose فلیگ پیش کرتا ہے، JavaScript مختلف ڈیبگنگ ٹولز فراہم کرتا ہے۔ براؤزرز میں، ریکویسٹس، ہیڈرز، پے لوڈز، اور ٹائمنگ کا معائنہ کرنے کے لیے DevTools میں نیٹ ورک ٹیب کا استعمال کریں۔ پروگراماٹک ڈیبگنگ کے لیے، آپ ریکویسٹ/ریسپانس تفصیلات کو لاگ کرنے کے لیے axios انٹرسیپٹرز کا استعمال کر سکتے ہیں یا fetch کے ساتھ کسٹم لاگنگ کو نافذ کر سکتے ہیں۔ Node.js میں، آپ 'http-debug' جیسی لائبریریز کا استعمال کر سکتے ہیں یا NODE_DEBUG=http ماحولیاتی متغیر سیٹ کر سکتے ہیں۔

JavaScript API ٹیسٹنگ کے لیے Curl کمانڈ حوالہ

JavaScript کے ساتھ موثر API ٹیسٹنگ کے لیے curl کمانڈز کو سمجھنا ضروری ہے۔ یہاں ہمارے کنورٹر کے ذریعے سپورٹ کردہ عام curl آپشنز کا ایک فوری حوالہ ہے:

بنیادی curl سنٹیکس

curl [options] [URL]

عام curl آپشنز

پیچیدہ curl کمانڈز کو تبدیل کرنا

ہمارا JavaScript کنورٹر متعدد ہیڈرز، اتھنٹیکیشن، ڈیٹا پے لوڈز، اور مختلف آپشنز سمیت پیچیدہ curl کمانڈز کو سنبھالتا ہے۔ بس اپنی curl کمانڈ پیسٹ کریں اور Fetch API یا Axios کا استعمال کرتے ہوئے صاف، جدید JavaScript کوڈ حاصل کریں۔

JavaScript HTTP بہترین طریقے

JavaScript کے Fetch API یا Axios کے ساتھ کام کرتے وقت، موثر اور محفوظ API انٹریکشنز کے لیے ان بہترین طریقوں پر عمل کریں:

1. بہتر پڑھنے کے لیے async/await کا استعمال کریں

// Using async/await with fetch
async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    
    if (!response.ok) {
      throw new Error(`HTTP error! Status: ${response.status}`);
    }
    
    const data = await response.json();
    console.log(data);
    return data;
  } catch (error) {
    console.error('Fetch error:', error);
  }
}

// Using async/await with axios
async function fetchDataWithAxios() {
  try {
    const response = await axios.get('https://api.example.com/data');
    console.log(response.data);
    return response.data;
  } catch (error) {
    console.error('Axios error:', error);
  }
}

2. ریکویسٹ ری ٹرائی میکانزم کو نافذ کریں

async function fetchWithRetry(url, options = {}, retries = 3, backoff = 300) {
  try {
    const response = await fetch(url, options);
    return response;
  } catch (error) {
    if (retries <= 1) throw error;
    
    await new Promise(resolve => setTimeout(resolve, backoff));
    return fetchWithRetry(url, options, retries - 1, backoff * 2);
  }
}

3. دوبارہ قابل استعمال API کلائنٹس بنائیں

// Create configurable API client with axios
const apiClient = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
});

// Add request interceptors
apiClient.interceptors.request.use(config => {
  // Do something before request is sent
  const token = localStorage.getItem('token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
}, error => {
  return Promise.reject(error);
});

// Add response interceptors
apiClient.interceptors.response.use(response => {
  // Any status code within 2xx range
  return response;
}, error => {
  // Handle 401 Unauthorized errors
  if (error.response && error.response.status === 401) {
    console.log('Unauthorized, please login again');
  }
  return Promise.reject(error);
});

// Use the API client
apiClient.get('/users')
  .then(response => console.log(response.data))
  .catch(error => console.error(error));

4. ہمزمان ریکویسٹس کو سنبھالیں

// Using Promise.all with fetch
async function fetchMultipleResources() {
  try {
    const [users, products, orders] = await Promise.all([
      fetch('https://api.example.com/users').then(res => res.json()),
      fetch('https://api.example.com/products').then(res => res.json()),
      fetch('https://api.example.com/orders').then(res => res.json())
    ]);
    
    console.log({ users, products, orders });
    return { users, products, orders };
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

// Using axios.all for concurrent requests
async function fetchMultipleResourcesWithAxios() {
  try {
    const [users, products, orders] = await axios.all([
      axios.get('https://api.example.com/users'),
      axios.get('https://api.example.com/products'),
      axios.get('https://api.example.com/orders')
    ]);
    
    console.log({
      users: users.data,
      products: products.data,
      orders: orders.data
    });
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

5. ریکویسٹ کیشنگ کو نافذ کریں

// Simple in-memory cache implementation
const cache = new Map();

async function fetchWithCache(url, options = {}, ttl = 60000) {
  const cacheKey = `${url}-${JSON.stringify(options)}`;
  
  // Check cache
  const cachedItem = cache.get(cacheKey);
  if (cachedItem && Date.now() < cachedItem.expiry) {
    console.log('Using cached data');
    return cachedItem.data;
  }
  
  // If no cache or expired, make the request
  const response = await fetch(url, options);
  const data = await response.json();
  
  // Update cache
  cache.set(cacheKey, {
    data,
    expiry: Date.now() + ttl
  });
  
  return data;
}
" } }, { "@type": "Question", "name": "میں فائل اپلوڈ والے curl کمانڈ کو JavaScript میں کیسے تبدیل کروں؟", "acceptedAnswer": { "@type": "Answer", "text": "JavaScript میں فائل اپلوڈز کے لیے، آپ کو FormData API کا استعمال کرنے کی ضرورت ہوگی۔ ہمارا کنورٹر -F یا --form آپشنز والے curl کمانڈز کو سنبھالتا ہے اور fetch یا axios کا استعمال کرتے ہوئے مناسب JavaScript کوڈ تیار کرتا ہے۔" } } ] }