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 അഭ്യർത്ഥനകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഒരു റൂട്ട് നിർവചിക്കാൻ decorator ഉപയോഗിക്കുന്നു. ഒരു 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) => { ... }) നൽകിയ ഐഡിയെ അടിസ്ഥാനമാക്കി ഉറവിടം അപ്ഡേറ്റ് ചെയ്യുകയോ സൃഷ്ടിക്കുകയോ ചെയ്തുകൊണ്ട് റൂട്ട് 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, 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 രീതികൾ തമ്മിലുള്ള പ്രധാന വ്യത്യാസങ്ങൾ
തമ്മിലുള്ള വ്യത്യാസം മനസ്സിലാക്കുന്നതിനുള്ള മറ്റൊരു നിർണായക വശം POST ഒപ്പം PUT എച്ച്ടിടിപിയിൽ ഐഡമ്പറ്റൻസിയാണ്. ഐഡംപോട്ടൻസി എന്നാൽ ഒരേപോലെയുള്ള ഒന്നിലധികം അഭ്യർത്ഥനകൾ നടത്തുന്നത് ഒരൊറ്റ അഭ്യർത്ഥന നടത്തുന്നതിന് സമാനമായ ഫലം ഉണ്ടായിരിക്കണം എന്നാണ്. ദി PUT രീതി ഐഡമ്പറ്റൻ്റാണ്, അതിനർത്ഥം നിങ്ങൾ എത്ര തവണ അയച്ചാലും അത് തന്നെ PUT അഭ്യർത്ഥിക്കുക, ഫലം സമാനമായിരിക്കും: ഉറവിടം സൃഷ്ടിക്കപ്പെടും അല്ലെങ്കിൽ അതേ അവസ്ഥയിലേക്ക് അപ്ഡേറ്റ് ചെയ്യും. RESTful സേവനങ്ങളിൽ പ്രവചിക്കാവുന്നതും സ്ഥിരതയുള്ളതുമായ പെരുമാറ്റം ഉറപ്പാക്കുന്നതിന് ഇത് നിർണായകമാണ്.
വിപരീതമായി, ദി POST രീതി അപാരമല്ല. ഒന്നിലധികം സമാനം POST അഭ്യർത്ഥനകൾക്ക് വ്യത്യസ്ത URI-കൾ ഉപയോഗിച്ച് ഒന്നിലധികം ഉറവിടങ്ങൾ സൃഷ്ടിക്കാൻ കഴിയും. ഒരു ഫോമിൽ ഒന്നിലധികം എൻട്രികൾ സമർപ്പിക്കുന്നത് പോലെ, ഒന്നിലധികം വ്യത്യസ്ത ഉറവിടങ്ങൾ സൃഷ്ടിക്കാൻ ആഗ്രഹിക്കുമ്പോൾ ഈ നിഷ്ക്രിയത്വം പ്രയോജനകരമാണ്. ഈ വ്യത്യാസങ്ങൾ മനസ്സിലാക്കുന്നത് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ്റെ ആവശ്യമായ സ്വഭാവത്തെ അടിസ്ഥാനമാക്കി ഏത് രീതിയാണ് ഉപയോഗിക്കേണ്ടതെന്ന് തീരുമാനിക്കാൻ സഹായിക്കുന്നു, അത് REST തത്ത്വങ്ങൾ പാലിക്കുന്നുണ്ടെന്നും പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നുവെന്നും ഉറപ്പാക്കുന്നു.
POST, PUT രീതികളെ കുറിച്ച് പതിവായി ചോദിക്കുന്ന ചോദ്യങ്ങൾ
- POST രീതിയുടെ പ്രാഥമിക ലക്ഷ്യം എന്താണ്?
- യുടെ പ്രാഥമിക ലക്ഷ്യം POST നിർദ്ദിഷ്ട യുആർഐയുടെ കീഴിലായി ഒരു പുതിയ ഉറവിടം സൃഷ്ടിക്കുക എന്നതാണ് രീതി.
- റിസോഴ്സ് കൈകാര്യം ചെയ്യലിൻ്റെ കാര്യത്തിൽ PUT രീതി എങ്ങനെ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു?
- ദി PUT നിർദ്ദിഷ്ട യുആർഐയിൽ ഒരു ഉറവിടം സൃഷ്ടിക്കുന്നതിനോ മാറ്റിസ്ഥാപിക്കുന്നതിനോ രീതി ഉപയോഗിക്കുന്നു.
- PUT രീതി അപര്യാപ്തമാണോ?
- അതെ, ദി PUT ഈ രീതി നിഷ്ക്രിയമാണ്, അതായത് ഒന്നിലധികം സമാന അഭ്യർത്ഥനകൾക്ക് ഒരൊറ്റ അഭ്യർത്ഥനയുടെ അതേ ഫലം ഉണ്ടാകും.
- എന്തുകൊണ്ട് POST രീതി അല്ലാത്തതായി കണക്കാക്കുന്നു
POST വേഴ്സസ് PUT എന്നതിനെക്കുറിച്ചുള്ള അന്തിമ ചിന്തകൾ
ഉപസംഹാരമായി, HTTP പ്രവർത്തനങ്ങളിൽ POST, PUT രീതികൾ വ്യതിരിക്തമായ ഉദ്ദേശ്യങ്ങൾ നിറവേറ്റുന്നു. POST അവരുടെ URI വ്യക്തമാക്കാതെ തന്നെ പുതിയ ഉറവിടങ്ങൾ സൃഷ്ടിക്കുന്നതിന് അനുയോജ്യമാണ്, ഒന്നിലധികം എൻട്രികൾ ചേർക്കുന്നതിന് അതിനെ ബഹുമുഖമാക്കുന്നു. മറുവശത്ത്, ഒരു നിർദ്ദിഷ്ട യുആർഐയിൽ ഉറവിടങ്ങൾ സൃഷ്ടിക്കുന്നതിനോ അപ്ഡേറ്റുചെയ്യുന്നതിനോ, ഐഡമ്പറ്റൻസി ഉറപ്പാക്കുന്നതിന് PUT അനുയോജ്യമാണ്. ഫലപ്രദവും കാര്യക്ഷമവുമായ RESTful API-കൾ നടപ്പിലാക്കുന്നതിന് ഈ വ്യത്യാസങ്ങൾ മനസ്സിലാക്കേണ്ടത് അത്യാവശ്യമാണ്. ഓരോ രീതിയും ഉചിതമായി ഉപയോഗിക്കുന്നതിലൂടെ, ഡെവലപ്പർമാർക്ക് അവരുടെ ആപ്ലിക്കേഷനുകൾ റിസോഴ്സ് സൃഷ്ടിക്കലും അപ്ഡേറ്റുകളും സ്ഥിരമായും പ്രവചനാതീതമായും കൈകാര്യം ചെയ്യുന്നുവെന്ന് ഉറപ്പാക്കാൻ കഴിയും.