Как переопределить конечную точку, если я хочу выполнить некоторые преобразования данных, прежде чем они попадут в базу данных. Например, допустим, у нас была таблица people
с именем столбца fname
, и мы переименовали ее в first_name
. Но наши пользователи делают запросы с fname
. Есть ли способ переопределить конечную точку с помощью пользовательского маршрута для people
, чтобы я мог преобразовать имя столбца из fname
в first_name
или более сложный, запустить некоторый код Python перед тем, как самому вызывать SQLALchemy или, возможно, возвращать его вернуться к Eve Framework для продолжения вызова базы данных?
например. используя QuickStart, я попробовал что-то вроде этого, но это не сработало:
from eve import Eve
from flask import jsonify
app = Eve()
@app.route('/people/<name>')
def custom_people_func(name):
return jsonify(name='Override', people_name=name)
if __name__ == '__main__':
app.run()
settings.py
people = {
# 'title' tag used in item links. Defaults to the resource title minus
# the final, plural 's' (works fine in most cases but not for 'people')
'item_title': 'person',
# by default the standard item entry point is defined as
# '/people/<ObjectId>'. We leave it untouched, and we also enable an
# additional read-only entry point. This way consumers can also perform
# GET requests at '/people/<lastname>'.
'additional_lookup': {
'url': 'regex("[\w]+")',
'field': 'lastname'
},
# We choose to override global cache-control directives for this resource.
'cache_control': 'max-age=10,must-revalidate',
'cache_expires': 10,
# most global settings can be overridden at resource level
'resource_methods': ['GET', 'POST'],
'schema': schema
}
DOMAIN = {'people': people}
Когда я делаю curl -i http://127.0.0.1:5000/people/obama
, он не будет вызывать метод, который я определил, а по умолчанию будет использовать Eve.
В общем, как нам управлять такими изменениями в базе данных, если это возможно, с помощью Eve?