HTTP இல் POST மற்றும் PUT இடையே உள்ள வித்தியாசத்தைப் புரிந்துகொள்வது

HTTP Methods

HTTP முறைகளுக்கான அறிமுகம்

வலை அபிவிருத்தி உலகில், வெவ்வேறு HTTP முறைகளுக்கு இடையிலான நுணுக்கங்களைப் புரிந்துகொள்வது முக்கியமானது. பொதுவாகப் பயன்படுத்தப்படும் இரண்டு முறைகள், POST மற்றும் PUT, அவற்றின் ஒற்றுமைகள் மற்றும் வள உருவாக்கம் மற்றும் புதுப்பித்தல் ஆகியவற்றில் உள்ள வேறுபாடுகளால் அடிக்கடி குழப்பத்தை ஏற்படுத்துகின்றன.

RFC 2616 இன் படி, POST முதன்மையாக ஒரு புதிய ஆதாரத்தை உருவாக்க பயன்படுகிறது, அதே சமயம் PUT ஏற்கனவே உள்ள வளத்தை உருவாக்கலாம் அல்லது மாற்றலாம். இந்தக் கட்டுரை இந்த முறைகளை விரிவாக ஆராய்வதோடு, வளத்தை உருவாக்குவதற்கு எது பயன்படுத்தப்பட வேண்டும் என்பதைத் தெளிவுபடுத்த உதவும்.

கட்டளை விளக்கம்
@app.route('/resource', methods=['POST']) ஒரு ஆதாரத்தை உருவாக்குவதற்கான POST கோரிக்கைகளைக் கையாளுவதற்கு Flask இல் ஒரு வழியை வரையறுக்கிறது.
request.json Flask இல் உள்ள கோரிக்கை அமைப்பிலிருந்து JSON தரவைப் பிரித்தெடுக்கிறது.
resources[resource_id] = data Flask இல் உள்ள வள அகராதியில் வளத்தை சேமிக்கிறது அல்லது புதுப்பிக்கிறது.
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 கோரிக்கைகளை கையாள்வதற்கான வழியை வரையறுக்க டெக்கரேட்டர் பயன்படுத்தப்படுகிறது. ஒரு POST கோரிக்கை செய்யப்படும் போது, ​​தி request.json கட்டளை JSON தரவை கோரிக்கை அமைப்பிலிருந்து பிரித்தெடுக்கிறது. ஆதார ஐடி ஏற்கனவே இருந்தால், அது பிழையை வழங்குகிறது. இல்லையெனில், அது புதிய வளத்தை சேமிக்கிறது அகராதி. PUT கோரிக்கைகளுக்கு, தி டெக்கரேட்டர் ஒரு வளத்தைப் புதுப்பிக்க அல்லது உருவாக்கப் பயன்படுகிறது, குறிப்பிட்ட ஆதார ஐடியின் கீழ் தரவு சேமிக்கப்படுவதை உறுதி செய்கிறது.

Node.js மற்றும் Express எடுத்துக்காட்டில், சேவையகம் JSON தரவைப் பயன்படுத்தி அலசுவதற்கு அமைக்கப்பட்டுள்ளது . பாதை ஆதாரம் ஏற்கனவே உள்ளதா எனச் சரிபார்த்து, இல்லையெனில் சேமித்து வைப்பதன் மூலம் POST கோரிக்கைகளைக் கையாளுகிறது. தி வழங்கப்பட்ட ஐடியின் அடிப்படையில் வளத்தைப் புதுப்பித்தல் அல்லது உருவாக்குவதன் மூலம் பாதை PUT கோரிக்கைகளைக் கையாளுகிறது. ஒவ்வொரு HTTP முறைக்கும் உள்ள வேறுபாடுகள் மற்றும் பொருத்தமான பயன்பாட்டு நிகழ்வுகளை முன்னிலைப்படுத்தி, வலை பயன்பாடுகளில் வள உருவாக்கம் மற்றும் புதுப்பிப்புகளை நிர்வகிக்க POST மற்றும் PUT முறைகள் எவ்வாறு பயன்படுத்தப்படலாம் என்பதை இரண்டு ஸ்கிரிப்ட்களும் திறம்பட விளக்குகின்றன.

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 மற்றும் Express Framework உடன் 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 முறைகளுக்கு இடையே உள்ள முக்கிய வேறுபாடுகள்

இடையே உள்ள வேறுபாட்டைப் புரிந்துகொள்வதற்கான மற்றொரு முக்கியமான அம்சம் மற்றும் HTTP யில் ஐடியம்போடென்சி உள்ளது. ஐடெம்போடென்சி என்பது ஒரே மாதிரியான பல கோரிக்கைகளை ஒரே கோரிக்கையை வைப்பது போன்ற விளைவைக் கொண்டிருக்க வேண்டும். தி இந்த முறை மிகவும் சக்தியற்றது, அதாவது நீங்கள் எத்தனை முறை அனுப்பினாலும் அதைப் பொருட்படுத்தாது PUT கோரிக்கை, முடிவு ஒரே மாதிரியாக இருக்கும்: ஆதாரம் உருவாக்கப்படும் அல்லது அதே நிலைக்கு புதுப்பிக்கப்படும். RESTful சேவைகளில் யூகிக்கக்கூடிய மற்றும் நிலையான நடத்தையை உறுதி செய்வதற்கு இது மிகவும் முக்கியமானது.

மாறாக, தி முறை அசாத்தியமானது அல்ல. ஒரே மாதிரியான பல கோரிக்கைகள் வெவ்வேறு URIகளுடன் பல ஆதாரங்களை உருவாக்கலாம். ஒரு படிவத்தில் பல உள்ளீடுகளைச் சமர்ப்பிப்பது போன்ற பல தனித்துவமான ஆதாரங்களை உருவாக்க விரும்பும் போது, ​​இந்த ஐடெம்போடென்சி நன்மை பயக்கும். இந்த வேறுபாடுகளைப் புரிந்துகொள்வது, உங்கள் பயன்பாட்டின் தேவையான நடத்தையின் அடிப்படையில் எந்த முறையைப் பயன்படுத்த வேண்டும் என்பதைத் தீர்மானிக்க உதவுகிறது, இது REST கொள்கைகளுக்கு இணங்குவதையும் எதிர்பார்த்தபடி செயல்படுவதையும் உறுதி செய்கிறது.

  1. POST முறையின் முதன்மை நோக்கம் என்ன?
  2. இன் முதன்மை நோக்கம் குறிப்பிட்ட URI க்கு கீழ்ப்பட்ட ஒரு புதிய ஆதாரத்தை உருவாக்குவதே முறையாகும்.
  3. PUT முறை வள கையாளுதலின் அடிப்படையில் எவ்வாறு வேறுபடுகிறது?
  4. தி குறிப்பிட்ட URI இல் வளத்தை உருவாக்க அல்லது மாற்றுவதற்கு முறை பயன்படுத்தப்படுகிறது.
  5. PUT முறை செயலற்றதா?
  6. ஆம், தி முறை வலிமையற்றது, அதாவது பல ஒத்த கோரிக்கைகள் ஒரு கோரிக்கையின் அதே விளைவைக் கொண்டிருக்கும்.
  7. POST முறை ஏன் அல்லாததாகக் கருதப்படுகிறது

    முடிவில், POST மற்றும் PUT முறைகள் இரண்டும் HTTP செயல்பாடுகளில் தனித்தனி நோக்கங்களுக்காக சேவை செய்கின்றன. POST ஆனது URI ஐக் குறிப்பிடாமல் புதிய ஆதாரங்களை உருவாக்குவதற்கு ஏற்றது, மேலும் பல உள்ளீடுகளைச் சேர்ப்பதற்கு பல்துறை திறன் கொண்டது. மறுபுறம், PUT ஆனது, ஒரு குறிப்பிட்ட URI இல் வளங்களை உருவாக்க அல்லது புதுப்பிப்பதற்கு ஏற்றது. பயனுள்ள மற்றும் திறமையான RESTful APIகளை செயல்படுத்துவதற்கு இந்த வேறுபாடுகளைப் புரிந்துகொள்வது அவசியம். ஒவ்வொரு முறையையும் சரியான முறையில் பயன்படுத்துவதன் மூலம், டெவலப்பர்கள் தங்கள் பயன்பாடுகள் வள உருவாக்கம் மற்றும் புதுப்பிப்புகளை தொடர்ந்து மற்றும் கணிக்கக்கூடிய வகையில் கையாளுவதை உறுதிசெய்ய முடியும்.