HTTP طریقوں کا تعارف
ویب ڈویلپمنٹ کی دنیا میں، HTTP کے مختلف طریقوں کے درمیان باریکیوں کو سمجھنا بہت ضروری ہے۔ عام طور پر استعمال ہونے والے دو طریقے، POST اور PUT، وسائل کی تخلیق اور اپ ڈیٹ کرنے میں اپنی مماثلت اور فرق کی وجہ سے اکثر الجھن کا باعث بنتے ہیں۔
RFC 2616 کے مطابق، POST بنیادی طور پر ایک نیا وسیلہ بنانے کے لیے استعمال ہوتا ہے، جبکہ PUT یا تو موجودہ وسائل کو تخلیق یا بدل سکتا ہے۔ یہ مضمون ان طریقوں کو تفصیل سے دریافت کرے گا اور یہ واضح کرنے میں مدد کرے گا کہ وسائل بنانے کے لیے کون سا استعمال کیا جانا چاہیے۔
کمانڈ | تفصیل |
---|---|
@app.route('/resource', methods=['POST']) | ایک وسیلہ بنانے کے لیے POST کی درخواستوں کو سنبھالنے کے لیے فلاسک میں ایک راستے کی وضاحت کرتا ہے۔ |
request.json | فلاسک میں درخواست کے جسم سے JSON ڈیٹا نکالتا ہے۔ |
resources[resource_id] = data | فلاسک میں وسائل کی لغت میں وسائل کو اسٹور یا اپ ڈیٹ کرتا ہے۔ |
app.use(express.json()) | ایکسپریس میں آنے والی درخواستوں کے لیے JSON پارسنگ کو فعال کرتا ہے۔ |
app.post('/resource', (req, res) =>app.post('/resource', (req, res) => { ... }) | ایک وسیلہ بنانے کے لیے POST کی درخواستوں کو ہینڈل کرنے کے لیے ایکسپریس میں ایک راستے کی وضاحت کرتا ہے۔ |
app.put('/resource/:id', (req, res) =>app.put('/resource/:id', (req, res) => { ... }) | ایک وسیلہ کو اپ ڈیٹ کرنے یا تخلیق کرنے کی PUT درخواستوں کو سنبھالنے کے لیے ایکسپریس میں ایک روٹ کی وضاحت کرتا ہے۔ |
ویب ایپلیکیشنز میں HTTP طریقوں کو نافذ کرنا
فراہم کردہ اسکرپٹس کو لاگو کرنے کا طریقہ دکھاتا ہے۔ POST اور PUT فلاسک اور ایکسپریس فریم ورک کا استعمال کرتے ہوئے ویب ایپلی کیشنز میں طریقے۔ فلاسک کی مثال میں، @app.route('/resource', methods=['POST']) ڈیکوریٹر کا استعمال POST کی درخواستوں کو سنبھالنے کے راستے کی وضاحت کے لیے کیا جاتا ہے۔ جب POST کی درخواست کی جاتی ہے، request.json کمانڈ درخواست کے جسم سے JSON ڈیٹا نکالتی ہے۔ اگر وسائل کی شناخت پہلے سے موجود ہے، تو یہ ایک خرابی لوٹاتا ہے۔ بصورت دیگر، یہ نئے وسائل کو میں ذخیرہ کرتا ہے۔ resources ڈکشنری PUT درخواستوں کے لیے، @app.route('/resource/<int:resource_id>', methods=['PUT']) ڈیکوریٹر کا استعمال وسائل کو اپ ڈیٹ کرنے یا تخلیق کرنے کے لیے کیا جاتا ہے، اس بات کو یقینی بناتے ہوئے کہ ڈیٹا کو مخصوص وسائل کی شناخت کے تحت محفوظ کیا جاتا ہے۔
Node.js اور Express مثال میں، سرور JSON ڈیٹا کا استعمال کرتے ہوئے تجزیہ کرنے کے لیے ترتیب دیا گیا ہے۔ app.use(express.json()). راستہ app.post('/resource', (req, res) => { ... }) POST درخواستوں کو یہ چیک کرکے ہینڈل کرتا ہے کہ آیا وسائل پہلے سے موجود ہے اور اگر نہیں ہے تو اسے اسٹور کرتا ہے۔ دی app.put('/resource/:id', (req, res) => { ... }) راستہ فراہم کردہ ID کی بنیاد پر وسائل کو اپ ڈیٹ یا تخلیق کرکے PUT درخواستوں کو ہینڈل کرتا ہے۔ دونوں اسکرپٹس مؤثر طریقے سے واضح کرتی ہیں کہ کس طرح POST اور PUT طریقوں کو ویب ایپلیکیشنز میں وسائل کی تخلیق اور اپ ڈیٹس کو منظم کرنے کے لیے استعمال کیا جا سکتا ہے، ہر HTTP طریقہ کے لیے اختلافات اور مناسب استعمال کے معاملات کو اجاگر کرتے ہوئے
POST اور PUT طریقوں کو نافذ کرنے کے لیے فلاسک کا استعمال
فلاسک فریم ورک کے ساتھ ازگر
from flask import Flask, request, jsonify
app = Flask(__name__)
resources = {}
@app.route('/resource', methods=['POST'])
def create_resource():
data = request.json
resource_id = data.get('id')
if resource_id in resources:
return jsonify({'error': 'Resource already exists'}), 400
resources[resource_id] = data
return jsonify(data), 201
@app.route('/resource/<int:resource_id>', methods=['PUT'])
def update_or_create_resource(resource_id):
data = request.json
resources[resource_id] = data
return jsonify(data), 200
if __name__ == '__main__':
app.run(debug=True)
Node.js اور Express کے ساتھ RESTful API
Node.js اور ایکسپریس فریم ورک کے ساتھ JavaScript
const express = require('express');
const app = express();
app.use(express.json());
let resources = {}
app.post('/resource', (req, res) => {
const data = req.body;
const resourceId = data.id;
if (resources[resourceId]) {
return res.status(400).json({ error: 'Resource already exists' });
}
resources[resourceId] = data;
res.status(201).json(data);
});
app.put('/resource/:id', (req, res) => {
const resourceId = req.params.id;
resources[resourceId] = req.body;
res.status(200).json(req.body);
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
POST اور PUT طریقوں کے درمیان کلیدی فرق
کے درمیان فرق کو سمجھنے کا ایک اور اہم پہلو POST اور PUT HTTP میں idempotency ہے۔ Idempotency کا مطلب یہ ہے کہ ایک سے زیادہ ایک جیسی درخواستیں کرنے کا وہی اثر ہونا چاہئے جو ایک درخواست کرنے پر ہوتا ہے۔ دی PUT طریقہ غیرمعمولی ہے، جس کا مطلب ہے کہ آپ اسے کتنی ہی بار بھیجیں۔ PUT درخواست کریں، نتیجہ وہی ہوگا: وسائل اسی حالت میں بنائے جائیں گے یا اپ ڈیٹ کیے جائیں گے۔ یہ RESTful خدمات میں پیش گوئی کے قابل اور مستقل رویے کو یقینی بنانے کے لیے اہم ہے۔
اس کے برعکس، POST طریقہ بے ضمیر نہیں ہے. متعدد ایک جیسے POST درخواستیں مختلف URIs کے ساتھ متعدد وسائل بنا سکتی ہیں۔ یہ غیر قابلیت فائدہ مند ہے جب متعدد الگ الگ وسائل کی تخلیق مطلوب ہو، جیسے کہ ایک فارم میں متعدد اندراجات جمع کرانا۔ ان اختلافات کو سمجھنے سے یہ فیصلہ کرنے میں مدد ملتی ہے کہ آپ کی درخواست کے مطلوبہ رویے کی بنیاد پر کون سا طریقہ استعمال کرنا ہے، اس بات کو یقینی بناتے ہوئے کہ یہ REST اصولوں پر عمل پیرا ہے اور توقع کے مطابق کام کرتا ہے۔
POST اور PUT طریقوں کے بارے میں اکثر پوچھے گئے سوالات
- POST طریقہ کا بنیادی مقصد کیا ہے؟
- کا بنیادی مقصد POST طریقہ مخصوص URI کے ماتحت کے طور پر ایک نیا وسیلہ بنانا ہے۔
- وسائل کو سنبھالنے کے معاملے میں PUT طریقہ کس طرح مختلف ہے؟
- دی PUT طریقہ کو مخصوص URI پر وسائل بنانے یا تبدیل کرنے کے لیے استعمال کیا جاتا ہے۔
- کیا PUT طریقہ بے ضمیر ہے؟
- جی ہاں، PUT طریقہ idempotent ہے، یعنی متعدد یکساں درخواستوں کا اثر ایک ہی درخواست جیسا ہوگا۔
- POST طریقہ کو غیر کیوں سمجھا جاتا ہے۔
POST بمقابلہ PUT پر حتمی خیالات
آخر میں، POST اور PUT دونوں طریقے HTTP آپریشنز میں الگ الگ مقاصد کی تکمیل کرتے ہیں۔ POST اپنے URI کی وضاحت کیے بغیر نئے وسائل بنانے کے لیے مثالی ہے، اسے متعدد اندراجات شامل کرنے کے لیے ورسٹائل بناتا ہے۔ دوسری طرف، PUT، مخصوص URI پر وسائل بنانے یا اپ ڈیٹ کرنے کے لیے موزوں ہے، جس سے قابلیت کو یقینی بنایا جا سکتا ہے۔ مؤثر اور موثر RESTful APIs کو نافذ کرنے کے لیے ان اختلافات کو سمجھنا ضروری ہے۔ ہر طریقہ کو مناسب طریقے سے استعمال کرتے ہوئے، ڈویلپرز اس بات کو یقینی بنا سکتے ہیں کہ ان کی ایپلی کیشنز وسائل کی تخلیق اور اپ ڈیٹس کو مستقل اور متوقع طور پر سنبھالتی ہیں۔