플라스크에 http 헤더를 얻는 방법?


200

파이썬을 처음 접하고 Python Flask를 사용하고 REST API 서비스를 생성합니다.

클라이언트에게 전송 된 인증 헤더를 확인하고 싶습니다.

그러나 플라스크에서 HTTP 헤더를 얻는 방법을 찾을 수 없습니다.

HTTP 헤더 인증을 얻는 데 도움을 주시면 감사하겠습니다.



또한 Flask 빠른 시작API 설명서를 참조하십시오 .
Martijn Pieters

답변:


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

request.headers 사전처럼 동작하므로 다른 사전에서와 같이 헤더를 가져올 수도 있습니다.

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

1
빠른 도움말 @sanyi
emil

9
참고 : flask.pocoo.org/snippets/8을 보고 있는데 기본 인증을위한 사용자 이름과 비밀번호에 액세스 할 수있는 것 같습니다 : request.authorization.username또는 request.authorization.password.
Karthic Raghupathi

1
@Karthic Raghupathi, 헤더에 대시와 같은 잘못된 문자가없는 한 대부분의 헤더가 수행하는 (예 : X-Api-Key) 키가있는 사전처럼 액세스해야합니다.
Blairg23

1
@Abhijeet : ... 또는 이전 의견에서 제안한 코드를 사용할 수 있습니다. 훨씬 더 깨끗합니다.
Michael Scheper 2016 년

5
플라스크 헤더는 받아쓰기가 아닙니다. 예 ... 테스트에서 werkzeug.datastructures.EnvironHeaders로 돌아 오는 것을 볼 수 있습니다. werkzeug.pocoo.org/docs/0.14/datastructures/…
Pandem1c

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)

그것은 당신이 실제로 원하는 작전을 할 수있는 dict의 모든 헤더를 제공합니다. 내 유스 케이스에서는 파이썬 API가 프록시이기 때문에 모든 헤더를 다른 API로 전달해야했습니다.


2
@JamieLindsey 이것은 사실이 아닙니다. request.headers실제로는 EnvironHeaders사전처럼 액세스 할 수 있는 객체입니다. werkzeug.palletsprojects.com/en/1.0.x/datastructures/…
jasonrhaas

2

Flask에서 매개 변수, 헤더 및 본문을 얻는 방법을 살펴 보겠습니다. 우편 배달부의 도움으로 설명하겠습니다.

여기에 이미지 설명을 입력하십시오

params 키와 값은 API 엔드 포인트에 반영됩니다. 예를 들어 엔드 포인트의 key1 및 key2 : https://127.0.0.1/upload ? 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

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으로 텍스트를 가져옵니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.