পাইথন HTTP অনুরোধে 428 স্ট্যাটাস কোড বোঝা
পাইথন ব্যবহার করার সময় অনুরোধ মডিউল, এটি HTTP স্ট্যাটাস কোডগুলির সম্মুখীন হওয়া সাধারণ যা সার্ভারের উত্তরগুলির সাথে বিভিন্ন অসুবিধার সংকেত দেয়। এরকম একটি ত্রুটি হল 428 স্ট্যাটাস কোড, যা একটি মানদণ্ড নির্দেশ করে যা সার্ভারকে এগিয়ে যাওয়ার আগে অবশ্যই পূরণ করতে হবে। এটি প্রায়শই প্রয়োজনীয় শিরোনাম সরবরাহ করতে বা সঠিক ক্রমে অনুরোধগুলি সম্পাদন করতে ব্যর্থতার কারণে ঘটে।
এই পরিস্থিতিতে, একজন ব্যবহারকারী একটি পাঠানোর চেষ্টা করে পোস্ট একটি ওয়েবসাইটের জন্য অনুরোধ করা হয় কিন্তু 200 স্ট্যাটাস কোডের পরিবর্তে একটি 428 প্রতিক্রিয়া পায়। স্ক্রিপ্টে সঠিকভাবে তৈরি করা পেলোড এবং শিরোনাম রয়েছে, কিন্তু একটি গুরুত্বপূর্ণ উপাদান অনুপস্থিত, যার ফলে অনুরোধটি ব্যর্থ হয়েছে।
অনলাইন API-এর সাথে ইন্টারঅ্যাক্ট করার সময় এই ধরনের ত্রুটিগুলি প্রচলিত, বিশেষ করে যখন সার্ভারের অনুরোধগুলি প্রক্রিয়া করার আগে অতিরিক্ত মানদণ্ডের প্রয়োজন হয়৷ 428 স্ট্যাটাস কোডের অন্তর্নিহিত কারণ বোঝা সমস্যা সমাধান এবং সফল সমাধান প্রদানের জন্য গুরুত্বপূর্ণ।
এই পোস্টটি প্রদত্ত পাইথন স্ক্রিপ্টে 428 স্ট্যাটাস কোডের সম্ভাব্য কারণগুলি এবং এটি ঠিক করার জন্য কার্যকর কৌশলগুলি দেখবে, API এর সাথে একটি মসৃণ মিথস্ক্রিয়া এবং 200 স্ট্যাটাস কোড প্রতিক্রিয়া নিশ্চিত করবে।
আদেশ | ব্যবহৃত প্রোগ্রামিং কমান্ডের বর্ণনা |
---|---|
যদি-ম্যাচ | এই শিরোনামটি নিশ্চিত করে যে রিসোর্সটি নির্দিষ্ট ETag এর সাথে মেলে তবেই অনুরোধটি পরিচালনা করা হবে। এটি গুরুত্বপূর্ণ যখন সার্ভারের একটি পূর্বশর্ত পূরণের প্রয়োজন হয়, অনিচ্ছাকৃত ওভাররাইট বা পরিবর্তন প্রতিরোধ করে। |
যদি-অপরিবর্তিত-যখন থেকে | নির্দিষ্ট করে যে অনুরোধটি শুধুমাত্র তখনই সফল হবে যদি নির্দিষ্ট তারিখ থেকে রিসোর্স আপডেট করা না হয়। এটি একটি সংঘাত-প্রতিরোধ ব্যবস্থা যা নিশ্চিত করে যে একটি নির্দিষ্ট সময়ের পরে কোনো পরিবর্তন করা হয়নি। |
অনুরোধ. অধিবেশন() | ক অধিবেশন অবজেক্ট বিভিন্ন অনুরোধ জুড়ে স্থায়ী সেটিংস এবং কুকি সক্ষম করে। এই পদ্ধতিটি তাদের মধ্যে হেডার এবং প্রমাণীকরণ টোকেনগুলির মতো অবস্থা সংরক্ষণ করে বারবার অনুরোধগুলিকে অপ্টিমাইজ করে। |
session.post() | একটি সম্পদ তৈরি বা সম্পাদনা করতে, ব্যবহার করুন পোস্ট পদ্ধতি এই উদাহরণে, এটি JSON হিসাবে ফ্লাইট অনুসন্ধানের মানদণ্ড প্রেরণ করে এবং API থেকে ফ্লাইট ডেটার অনুরোধ করে। |
json=পেলোড | একটি অনুরোধের মূল অংশে একটি JSON অবজেক্ট অন্তর্ভুক্ত করতে ব্যবহৃত হয়। স্ক্রিপ্টে, ফ্লাইট অনুসন্ধান ডেটা API এ স্থানান্তরিত হয় এবং প্রক্রিয়া করা হয়। |
session.headers.update() | এই পদ্ধতি সহ সেশনে নতুন শিরোনাম যোগ করে ব্যবহারকারী-এজেন্ট এবং অনুমোদন, সার্ভারের সাথে সঠিক সংযোগ নিশ্চিত করতে এবং হেডার বা পূর্বশর্ত অনুপস্থিত হওয়ার মতো সমস্যাগুলি প্রতিরোধ করতে। |
রেফারার | একটি শিরোনাম যা ব্যবহারকারীর অনুরোধ করার আগে দেখা শেষ URLটি সনাক্ত করে৷ এটি প্রায়শই নিরাপত্তার কারণে বা অনুরোধের উত্স নির্ধারণের জন্য প্রয়োজন হয়৷ |
অবস্থা_কোড | এই বৈশিষ্ট্যটি HTTP অনুরোধের প্রতিক্রিয়া কোড পরীক্ষা করে। অনুরোধটি সফল হয়েছে কিনা (200) বা 428 পূর্বশর্ত ত্রুটির মতো একটি সমস্যা পূরণ হয়েছে কিনা তা নির্ধারণ করতে এটি ব্যবহার করা হয়। |
session.get() | GET পদ্ধতি সার্ভার থেকে তথ্য পায়। এটি প্রায়শই একটি মিথস্ক্রিয়ায় প্রথম অনুরোধ, একটি POST অনুরোধ পাঠানোর আগে প্রয়োজনীয় কুকিজ বা টোকেন পুনরুদ্ধার করতে ব্যবহৃত হয়। |
পাইথনের অনুরোধ মডিউলে HTTP 428 স্ট্যাটাস কোড ঠিক করা
এই সমাধানটি পাইথনের সুবিধা দেয় অনুরোধ মডিউল, শিরোনাম বা অনুমোদনের মতো অনুপস্থিত পূর্বশর্ত সরবরাহ করে POST অনুরোধে 428 স্ট্যাটাস কোড সমাধানের দিকে মনোনিবেশ করছে।
import requests
url = 'https://wizzair.com/en-gb'
link = 'https://be.wizzair.com/24.9.0/Api/search/search'
payload = {"isFlightChange": False, "flightList": [{"departureStation": "TIA", "arrivalStation": "VIE", "departureDate": "2024-09-17"}, {"departureStation": "VIE", "arrivalStation": "TIA", "departureDate": "2024-10-20"}], "adultCount": 1, "childCount": 0, "infantCount": 0, "wdc": True}
# Add If-Match or other required precondition headers
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
'Accept': 'application/json, text/plain, */*',
'Referer': 'https://wizzair.com/en-gb',
'If-Match': '<your-etag-here>',
'Content-Type': 'application/json'
}
with requests.Session() as session:
session.headers.update(headers)
r = session.get(url)
print(r.status_code)
response = session.post(link, json=payload)
print(response.status_code)
if response.status_code == 428:
print('428 Error: Missing required precondition.')
বিকল্প পদ্ধতি: পূর্বশর্তের জন্য অনুমোদন যোগ করা
এই স্ক্রিপ্ট একটি অনুমোদন টোকেন প্রদান করে 428 পূর্বশর্ত প্রয়োজন এবং API-তে প্রমাণীকৃত অ্যাক্সেস নিশ্চিত করতে।
import requests
url = 'https://wizzair.com/en-gb'
link = 'https://be.wizzair.com/24.9.0/Api/search/search'
token = 'Bearer your_auth_token'
payload = {"isFlightChange": False, "flightList": [{"departureStation": "TIA", "arrivalStation": "VIE", "departureDate": "2024-09-17"}, {"departureStation": "VIE", "arrivalStation": "TIA", "departureDate": "2024-10-20"}], "adultCount": 1, "childCount": 0, "infantCount": 0, "wdc": True}
headers = {
'User-Agent': 'Mozilla/5.0',
'Authorization': token,
'Content-Type': 'application/json'
}
with requests.Session() as session:
session.headers.update(headers)
r = session.get(url)
print(r.status_code)
response = session.post(link, json=payload)
print(response.status_code)
if response.status_code == 428:
print('428 Error: Ensure valid authorization or conditions.')
হেডারে অনুপস্থিত প্রয়োজনীয় ক্ষেত্রগুলি পরিচালনা করা
এই পদ্ধতিটি নিশ্চিত করে যে সমস্ত প্রয়োজনীয় শিরোনামগুলি POST অনুরোধে সরবরাহ করা হয়েছে যাতে অনুপস্থিত পূর্বশর্তগুলির কারণে 428 ত্রুটি এড়ানো যায়, যেমন যদি-অপরিবর্তিত-যখন থেকে হেডার
import requests
url = 'https://wizzair.com/en-gb'
link = 'https://be.wizzair.com/24.9.0/Api/search/search'
payload = {"isFlightChange": False, "flightList": [{"departureStation": "TIA", "arrivalStation": "VIE", "departureDate": "2024-09-17"}, {"departureStation": "VIE", "arrivalStation": "TIA", "departureDate": "2024-10-20"}], "adultCount": 1, "childCount": 0, "infantCount": 0, "wdc": True}
headers = {
'User-Agent': 'Mozilla/5.0',
'Accept': 'application/json, text/plain, */*',
'If-Unmodified-Since': 'Wed, 21 Oct 2020 07:28:00 GMT',
'Content-Type': 'application/json'
}
with requests.Session() as session:
session.headers.update(headers)
r = session.get(url)
print(r.status_code)
response = session.post(link, json=payload)
print(response.status_code)
if response.status_code == 428:
print('428 Error: Missing required headers.')
HTTP অনুরোধে পূর্বশর্ত সমস্যা সমাধান করা
HTTP অনুরোধগুলি প্রক্রিয়া করার সময়, a 428 স্ট্যাটাস কোড সাধারণত নির্দেশ করে যে সার্ভারের অগ্রসর হওয়ার আগে নির্দিষ্ট পূর্বশর্ত প্রয়োজন। রক্ষাকবচ শিরোনাম মত বাদ দেওয়া যদি-ম্যাচ বা যদি-অপরিবর্তিত-যখন থেকে এই সমস্যা হতে পারে. এই শিরোনামগুলি যাচাই করতে সাহায্য করে যে অনুরোধটি সার্ভারের প্রত্যাশার সাথে মেলে, ডেটা ওভাররাইট করার বা অবৈধ অনুরোধ পাঠানোর সম্ভাবনা কমিয়ে দেয়।
একটি 428 স্ট্যাটাস কোড প্রাপ্তির আরেকটি গুরুত্বপূর্ণ সমস্যা খারাপ সেশন পরিচালনা হতে পারে। অনেক অনলাইন অ্যাপ্লিকেশন ব্যবহারকারীদের প্রমাণীকরণ এবং ধারাবাহিক অনুরোধের উপর অবস্থা বজায় রাখতে সেশন পরিচালনার উপর নির্ভর করে। উদাহরণস্বরূপ, কুকিজ বা টোকেনের মতো সেশন ডেটা বজায় রাখতে ব্যর্থ হলে সার্ভার পরবর্তী POST অনুরোধ প্রত্যাখ্যান করতে পারে। পাইথনের অনুরোধ ব্যবহার করে. সেশন() এই সেশনগুলির সঠিক হ্যান্ডলিং সক্ষম করে, যার ফলে API এর সাথে মসৃণ যোগাযোগ হয়।
সেশন ম্যানেজমেন্ট এবং পূর্বশর্তের বাইরে, হেডার এবং পেলোডের সঠিক প্রবাহ নিশ্চিত করা গুরুত্বপূর্ণ। সার্ভার প্রায়ই যেমন নিরাপত্তা শিরোনাম দাবি অনুমোদন, রেফারার, এবং উৎপত্তি. তাদের অনুপস্থিতির কারণে অনুরোধটি ব্যর্থ হতে পারে, বিশেষ করে যখন সীমাবদ্ধ বা সংবেদনশীল ডেটা অ্যাক্সেস করা হয়। অনুরোধে এই শিরোনামগুলি সরবরাহ করা এবং যথাযথভাবে তৈরি করা হয়েছে তা নিশ্চিত করা 428 ত্রুটি এবং অন্যান্য অসুবিধাগুলি এড়াতে সাহায্য করতে পারে।
পাইথনে HTTP 428 ত্রুটি সম্পর্কে সাধারণ প্রশ্ন
- 428 স্ট্যাটাস কোড মানে কি?
- 428 স্ট্যাটাস কোড নির্দেশ করে যে সার্ভারের অনুরোধ প্রক্রিয়া করার আগে নির্দিষ্ট মানদণ্ড যেমন শিরোনাম বা টোকেন বৈধতা প্রয়োজন।
- আমি কিভাবে পাইথনে 428 ত্রুটি ঠিক করব?
- মত হেডার ব্যবহার করুন If-Match বা If-Unmodified-Since, এবং নিশ্চিত করুন যে সেশনটি সঠিকভাবে সংরক্ষিত হয়েছে requests.Session().
- কেন আমার POST অনুরোধ 428 ত্রুটি ফেরত দিচ্ছে?
- POST অনুরোধটি প্রক্রিয়া করার আগে, সার্ভার সম্ভবত একটি শর্ত পরীক্ষা করবে, যেমন একটি পূর্ব-বিদ্যমান শিরোনাম বা টোকেন।
- ভূমিকা কি If-Match শিরোনাম?
- দ If-Match হেডার নিশ্চিত করে যে রিসোর্সটি নির্দিষ্ট ETag মানের সাথে মেলে তবেই অনুরোধটি পরিচালনা করা হবে।
- কিভাবে আমি পাইথন অনুরোধে সঠিক সেশন পরিচালনা নিশ্চিত করতে পারি?
- ব্যবহার করে requests.Session() শিরোনাম এবং কুকি সহ আপনার সেশনটি পরবর্তী অনুরোধ জুড়ে সামঞ্জস্যপূর্ণ রাখে।
428 স্ট্যাটাস কোড ঠিক করার বিষয়ে চূড়ান্ত চিন্তা
428 স্ট্যাটাস কোড প্রায়ই অনুপস্থিত পূর্বশর্ত নির্দেশ করতে ব্যবহৃত হয়, যেমন অপরিহার্য শিরোনাম। এই সমস্যাটি সমাধান করতে, নিশ্চিত করুন যে অনুরোধটিতে সঠিক শিরোনাম রয়েছে, যেমন যদি-ম্যাচ বা যদি-অপরিবর্তিত-যখন থেকে. সেশন পরিচালনা করাও গুরুত্বপূর্ণ।
উপরন্তু, যথাযথভাবে প্রমাণীকরণ এবং অন্যান্য নিরাপত্তা-সম্পর্কিত শিরোনাম পরিচালনা করে, আপনি নিশ্চিত করতে পারেন যে POST অনুরোধটি সমস্যা ছাড়াই পরিচালনা করা হয়েছে। এই মানদণ্ডগুলিকে সম্বোধন করে, সার্ভারটিকে প্রয়োজনীয় 200 স্ট্যাটাস কোড ফেরত দেওয়া উচিত, এটি নির্দেশ করে যে অনুরোধটি সফল হয়েছে৷
HTTP 428 স্ট্যাটাস কোড সলিউশনের জন্য উৎস এবং রেফারেন্স
- HTTP স্ট্যাটাস কোড এবং সমস্যা সমাধানের পূর্বশর্ত ত্রুটির তথ্য থেকে প্রাপ্ত করা হয়েছিল মজিলা ডেভেলপার নেটওয়ার্ক .
- অফিসিয়াল পাইথন অনুরোধ ডকুমেন্টেশন HTTP অনুরোধে সেশন এবং শিরোনাম পরিচালনার বিষয়ে বিস্তারিত অন্তর্দৃষ্টি প্রদান করে। ভিজিট করুন পাইথন অনুরোধ লাইব্রেরি .
- সেশন হ্যান্ডলিং এবং API টোকেন পরিচালনার জন্য, থেকে সংস্থানগুলি রিয়েল পাইথন উল্লেখ করা হয়েছে।
- HTTP ত্রুটি পরিচালনার জন্য অতিরিক্ত উদাহরণ এবং সমস্যা সমাধানের পদক্ষেপগুলি পাওয়া যাবে স্ট্যাক ওভারফ্লো .