ফ্লাস্কে এইচডিপি শিরোনাম কীভাবে পাবেন?


199

আমি পাইথনের নবাগত এবং পাইথন ফ্লাস্ক ব্যবহার করে এবং আরএসটি এপিআই পরিষেবা উত্পন্ন করছি।

আমি অনুমোদনের শিরোনাম যা ক্লায়েন্টকে প্রেরণ করা হয়েছে তা পরীক্ষা করতে চাই।

তবে আমি ফ্লাস্কে এইচটিটিপি শিরোনাম পাওয়ার উপায় খুঁজে পাচ্ছি না।

এইচটিটিপি শিরোনাম অনুমোদনের জন্য যে কোনও সহায়তা প্রশংসিত হয়।



উত্তর:


298
from flask import request
request.headers.get('your-header-name')

request.headers অভিধানের মতো আচরণ করে, তাই আপনি কোনও শিরোনামের মতো আপনার শিরোনামটিও পেতে পারেন:

request.headers['your-header-name']

1
@ সানাই
এমিল

9
এফওয়াইআই: আমি flask.pocoo.org/snippets/8দেখছি এবং এটি প্রদর্শিত হয় আপনি যেমন বেসিক প্রমাণীকরণের জন্য ব্যবহারকারীর নাম এবং পাসওয়ার্ড অ্যাক্সেস করতে পারেন: request.authorization.usernameবা request.authorization.password
রঘুপতি

1
@ কার্থিক রঘুপতি, যতক্ষণ না শিরোনামের ড্যাশগুলির মতো অবৈধ অক্ষর না থাকে, যা বেশিরভাগ শিরোনামই করে (যেমন, এক্স-এপি-কী), সেক্ষেত্রে আপনাকে কীগুলির সাথে অভিধানের মতো এটির অ্যাক্সেস করতে হবে।
ব্লেয়ারজ 23

1
@ অভিজিৎ: ... অথবা আপনি আমার পূর্ববর্তী মন্তব্যে যে কোডটি বলেছিলেন তা স্রেফ আপনি ব্যবহার করতে পারেন। অনেক ক্লিনার
মাইকেল শ্যাপার 15

5
ফ্লাস্কের শিরোনামগুলি ডিক নয়, হ্যাঁ ... ... আমি সেগুলি আমার পরীক্ষাগুলিতে werkzeug.datastructures হিসাবে ফিরে আসতে দেখছি n werkzeug.pocoo.org/docs/0.14/datastructures/…
পান্ডেম

15

কেবলমাত্র লক্ষ করুন, পদ্ধতিগুলির মধ্যে ভিন্ন ভিন্ন, যদি শিরোলেখ উপস্থিত না থাকে

request.headers.get('your-header-name')

ফিরে আসবে Noneবা কোনও ব্যতিক্রম হবে না, যাতে আপনি এটি পছন্দ মতো ব্যবহার করতে পারেন

if request.headers.get('your-header-name'):
    ....

তবে নিম্নলিখিতগুলি একটি ত্রুটি ফেলবে

if request.headers['your-header-name'] # KeyError: 'your-header-name'
    ....

আপনি এটি দ্বারা পরিচালনা করতে পারেন

if 'your-header-name' in request.headers:
   customHeader = request.headers['your-header-name']
   ....

13

যদি কেউ কারওর দ্বারা প্রেরিত সমস্ত শিরোনামগুলি আনার চেষ্টা করে তবে কেবল সহজভাবে ব্যবহার করুন:

dict(request.headers)

এটি আপনাকে এমন একটি শিরোনামে সমস্ত শিরোনাম দেয় যা থেকে আপনি যা চান তা করতে পারেন actually আমার ব্যবহারের ক্ষেত্রে আমাকে সমস্ত শিরোনামকে অন্য API এ ফরোয়ার্ড করতে হয়েছিল যেহেতু পাইথন এপিআই একটি প্রক্সি ছিল xy


2
পছন্দ করুন request.headersআসলে এমন একটি EnvironHeadersজিনিস যা অভিধানের মতো অ্যাক্সেস করা যায়। werkzeug.palletpro
پروژې.

2

আসুন আমরা ফ্লাস্কে কীভাবে প্যারাম, শিরোনাম এবং বডি পাই তা দেখুন আমি পোস্টম্যানের সাহায্যে ব্যাখ্যা করব।

এখানে চিত্র বর্ণনা লিখুন

প্যারাম কীগুলি এবং মানগুলি এপিআই এর শেষ পয়েন্টে প্রতিফলিত হয়। উদাহরণস্বরূপ key1 এবং কী 2 উদাহরণস্বরূপ: https://127.0.0.1/ আপলোড করবেন ? কী 1 = মান 1 এবং কী 2 = মান 2

from flask import Flask, request
app = Flask(__name__)

@app.route('/upload')
def upload():

  key_1 = request.args.get('key1')
  key_2 = request.args.get('key2')
  print(key_1)
  #--> value1
  print(key_2)
  #--> value2

প্যারামের পরে, আসুন এখন হেডারগুলি কীভাবে পাবেন তা দেখুন :

এখানে চিত্র বর্ণনা লিখুন

  header_1 = request.headers.get('header1')
  header_2 = request.headers.get('header2')
  print(header_1)
  #--> header_value1
  print(header_2)
  #--> header_value2

এখন আসুন দেখি কীভাবে দেহটি পাওয়া যায়

এখানে চিত্র বর্ণনা লিখুন

  file_name = request.files['file'].filename
  ref_id = request.form['referenceId']
  print(ref_id)
  #--> WWB9838yb3r47484

সুতরাং আমরা অনুরোধ.ফায়ালস এবং অনুরোধ.ফর্মের সাথে পাঠ্য সহ আপলোড করা ফাইলগুলি আনব

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.