از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نحوه دریافت هدر HTTP در یک برنامه Flask
سرفصلهای مطلب
معرفی
در این بایت نگاهی به هدرهای درخواست HTTP در Flask خواهیم داشت. آنها می توانند اطلاعات مهمی را بین مشتری و سرور حمل کنند و درک نحوه دسترسی به آنها برای اکثر برنامه های وب پویا مورد نیاز است.
هدرهای درخواست HTTP چیست و چرا از آنها استفاده می کنیم؟
هدرهای HTTP به مشتری و سرور اجازه می دهند اطلاعات اضافی را با یکدیگر به اشتراک بگذارند و اغلب متادیتا را درخواست می کنند. به عنوان بخشی از یک درخواست یا پاسخ HTTP، هدر در صفحه وب نمایش داده نمی شود بلکه به سرور یا مشتری ارسال می شود. آنها می توانند حاوی اطلاعات مختلف زیادی باشند، مانند نوع مرورگر درخواست کننده، نوع محتوایی که برگردانده می شود، اطلاعات فردی کاربر و موارد دیگر.
با توجه به این موضوع، هدرهای HTTP را می توان برای چندین کار مانند احراز هویت، کنترل حافظه پنهان، اطلاعات اشکال زدایی/ ثبت نام و موارد دیگر استفاده کرد. آنها روشی انعطاف پذیر برای پیاده سازی ویژگی هایی ارائه می دهند که به صراحت توسط پروتکل استاندارد HTTP پوشش داده نمی شوند.
Flask، یک چارچوب وب میکرو در پایتون، دسترسی به هدرهای HTTP را بسیار آسان می کند. فلاسک request
شی شامل تمام اطلاعاتی است که مرورگر مشتری به برنامه ارسال می کند. این شامل هدرهای HTTP می شود.
برای دریافت این هدرها می توانید از request.headers
صفت. این ویژگی یک شی دیکشنری مانند را برمی گرداند و به شما این امکان را می دهد که مقادیر سرصفحه را با نحو استاندارد دیکشنری پایتون بازیابی کنید.
در اینجا یک مثال ساده است:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def home():
user_agent = request.headers.get('User-Agent')
return f'Your user agent is: {user_agent}'
در این کد، ما یک برنامه اصلی Flask را با یک مسیر واحد ایجاد می کنیم. هنگامی که به صفحه اصلی می روید، Flask هدر ‘User-Agent’ را از درخواست بازیابی می کند و آن را به عنوان یک رشته برمی گرداند.
مثال کد عملی
بیایید به یک مثال کاربردی تر نگاه کنیم. فرض کنید یک API داریم که داده های مختلفی را بر اساس هدر «Accept-Language» برمی گرداند. این هدر زبان ترجیحی مشتری را به سرویس می گوید.
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/data')
def data():
language = request.headers.get('Accept-Language')
if language == 'en-US':
return jsonify({'message': 'Hello, user!'})
elif language == 'es-ES':
return jsonify({'message': '¡Hola, usuario!'})
elif language == 'es-SR':
return jsonify({'message': 'Здраво, кориснику!'})
else:
return jsonify({'message': 'Hello, user!'})
در این مثال، API هدر «Accept-Language» را بررسی میکند و یک تبریک به زبان مناسب برمیگرداند. اگر زبان پشتیبانی نمی شود، به طور پیش فرض فقط انگلیسی را برمی گرداند.
نتیجه
در این بایت کوتاه، به طور خلاصه به سرفصلهای درخواست HTTP در Flask نگاهی انداختیم، که شامل چیستی آنها، چرایی استفاده از آنها و نحوه دسترسی به آنها در برنامه Flask میشود. دیدهایم که هدرها میتوانند طیف گستردهای از اطلاعات را منتقل کنند و حتی روشی انعطافپذیر برای کنترل رفتار برنامه شما ارائه دهند.
منتشر شده در 1402-12-26 23:50:05