ฉันเป็นมือใหม่กับงูใหญ่และใช้ Python Flask และสร้างบริการ REST API
ฉันต้องการตรวจสอบส่วนหัวการอนุญาตที่ส่งให้ลูกค้า
แต่ฉันไม่สามารถหาวิธีที่จะได้รับส่วนหัว HTTP ในขวด
ความช่วยเหลือใด ๆ สำหรับการขออนุมัติ HTTP ส่วนหัวจะได้รับการชื่นชม
ฉันเป็นมือใหม่กับงูใหญ่และใช้ Python Flask และสร้างบริการ REST API
ฉันต้องการตรวจสอบส่วนหัวการอนุญาตที่ส่งให้ลูกค้า
แต่ฉันไม่สามารถหาวิธีที่จะได้รับส่วนหัว HTTP ในขวด
ความช่วยเหลือใด ๆ สำหรับการขออนุมัติ HTTP ส่วนหัวจะได้รับการชื่นชม
คำตอบ:
from flask import request
request.headers.get('your-header-name')
request.headers
ทำงานเหมือนพจนานุกรมดังนั้นคุณสามารถรับส่วนหัวเหมือนที่คุณทำกับพจนานุกรมใด ๆ :
request.headers['your-header-name']
request.authorization.username
request.authorization.password
เพิ่งทราบความแตกต่างระหว่างวิธีการถ้าไม่มีส่วนหัว
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']
....
หากใครพยายามดึงส่วนหัวทั้งหมดที่ผ่านไปให้ใช้เพียงแค่:
dict(request.headers)
มันให้ส่วนหัวทั้งหมดในพจน์ที่คุณสามารถทำสิ่งที่คุณต้องการได้ ในกรณีที่ใช้งานของฉันฉันต้องส่งต่อส่วนหัวทั้งหมดไปยัง API อื่นเนื่องจาก python API เป็นพร็อกซี
request.headers
จริงๆแล้วเป็นEnvironHeaders
วัตถุที่สามารถเข้าถึงได้เช่นพจนานุกรม werkzeug.palletsprojects.com/en/1.0.x/datastructures/…
เรามาดูกันว่าเราได้รับส่วนหัวและร่างกายใน Flask อย่างไร ฉันจะอธิบายด้วยความช่วยเหลือของบุรุษไปรษณีย์
คีย์และค่าพารามิเตอร์จะปรากฏในจุดสิ้นสุดของ API เช่น key1 และ key2 ในจุดปลาย: https://127.0.0.1/upload ? key1 = value1 & key2 = value2
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
หลังจาก params ตอนนี้เรามาดูวิธีการรับส่วนหัว :
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
ดังนั้นเราจึงดึงไฟล์ที่อัปโหลดด้วย request.files และข้อความที่มี request.form