Flask Restplus проверка на наличие необходимых заголовков
Я хочу проверить, предоставил ли запрос требуемые заголовки, используя Flask-RestPlus.
Я попытался использовать https://flask-restful.readthedocs.io/en/0.3.5/reqparse.html который я использовал ранее, чтобы проверить тело на наличие необходимых параметров, и оно работает, но мне нужно также проверить заголовки
def RequestParser():
parser = reqparse.RequestParser()
parser.add_argument('PaymentMethod', location='headers')
return parser
@api.route('/request')
class Request(Resource):
parser = RequestParser()
def post(self):
data = self.parser.parse_args()
paymentMethod = request.headers.get('PaymentMethod')
paymentEndpoint = request.headers.get('PaymentEndpoint')
return paymentMethod
Я ожидаю, что результат скажет мне, что для отсутствующих заголовков нужен тот же результат, когда в теле отсутствуют параметры.
1 ответ
Попробуйте добавить аргумент required
:
parser.add_argument('PaymentMethod', required=True, location='headers')
См. По адресу: https://flask-restful.readthedocs.io/en/0.3.5/reqparse.html
Я использовал expect
декоратор с parser
который проверяет user_id header
.
app = Flask(__name__)
api = Api(app, authorizations=authorizations, security=[{"browser": ["ui"]}])
# Swagger namespaces - in Java they are controllers.
word_count_ns = api.namespace(name='Word count', path='/', description='Word count')
user_id_header_parser = api.parser()
user_id_header_parser.add_argument('user_id', location='headers')
@api.expect(user_id_header_parser)
@word_count_ns.route(api_word_count)
class WordCounter(Resource):
def post(self):
"""Counts words in request text. Expects header user_id"""
user_input = request.data.decode()
user_id_header = request.headers.get('user_id')
if not check_exists_by_id(user_id_header):
return Response('user_id header is needed', 401)
return return Response('[]', mimetype='application/json;charset=UTF-8')