Одна из содержательных частей цикла запрос-ответ — обработчик запроса. В этом уроке мы разберем, как находить и вызывать обработчика.
Обработчик
Общий принцип работы любого веб-фреймворка отражает архитектуру HTTP. На каждый адрес задается обработчик (handler) — функция, которая выполняет необходимые действия и возвращает ответ.
Обработчики регистрируются с помощью декоратора @route()
. Декоратор принимает путь или маршрут, для которого вызовется обработчик:
@app.route('/')
def index():
# …
@app.route('/data/users.json')
def users():
# …
Каждый путь состоит из сегментов — строк, которые разделены слешами ("/"). Функции index
и users
в примере — обработчики, а каждое применение декоратора route
— добавление нового правила маршрутизации.
Во фреймворках принято определять маршрут как комбинацию метода HTTP и адреса. И это соответствует идеям REST. Flask предлагает два способа указания метода:
- Как аргумент декоратора
route()
— все указанные методы будут обрабатываться одной функцией, а выбор метода будет в условиях:
from flask import request
@app.route('/', methods=['GET', 'POST'])
def hello():
# Получить доступ к содержимому запроса можно через специальный объект request
if request.method == 'POST':
return 'Hello, POST!'
return 'Hello, GET!'
- Как отдельные обработчики под каждый метод с помощью соответствующих декораторов:
get()
,post()
и других:
@app.get('/')
def hello_get():
return 'Hello, GET!'
@app.post('/')
def hello_post():