Вы можете использовать Flask's after_request
, чтобы зарегистрировать функцию, которая обрабатывает ответ после того, как он был сгенерирован представлением.
Например, чтобы сделать именно то, что вы просите (я использую встроенную функцию Python hash
, вы можете импортировать / записывать свои собственные при необходимости):
@app.after_request
def after_request(response):
data = json.loads(response.get_data())
data['checksum'] = hash(response.get_data())
response.set_data(json.dumps(data))
return response
Однако вам нужно будет всегда возвращать словарь, чтобы это работало. Вот пара альтернатив:
1) Включите ответ представления внутри другого json, например ::
@app.after_request
def after_request(response):
data = json.loads(response.get_data())
data = {
'response': data,
'checksum': hash(response.get_data())
}
response.set_data(json.dumps(data))
return response
2) Добавьте контрольную сумму к заголовкам ответа (я бы пошел с этим). E.g.:
@app.after_request
def after_request(response):
response.headers['Checksum'] = hash(response.get_data())
return response
В заключение: если вы хотите хэшировать ответ с помощью токена доступа, как вы указали в своем вопросе, вы можете получить доступ к этому токену из объекта request
, например, так:
from flask import request
access_token = request.headers.get('Authorization')
Теперь вы можете использовать access_token
так, как вам нужно.