Получить значения запроса в Python Blueprint route - PullRequest
0 голосов
/ 12 марта 2020

Я работаю над Python Flask API, используя Blueprint, и я хочу разбить результаты на страницы по одному маршруту. Если пользователь включает параметр запроса "page =", я хочу получить это значение. Как бы я это сделал?

В этом примере кода:

@api.route('/users', methods=['GET'])
def list_users():
    users = User.query.all()
    return jsonify(users=[i.serialize() for i in users])

Я бы хотел добавить параметр страницы if. Спасибо! Я очень плохо знаком с Flask, просто пробую это сегодня вечером.

1 Ответ

0 голосов
/ 12 марта 2020

В зависимости от того, что именно вы пытаетесь сделать, вы можете использовать переменные в маршруте или параметры запроса.

Flask Краткое руководство содержит хорошее введение в переменные в маршруте здесь . Например, в вашем случае вы должны сделать что-то вроде этого:

@api.route('/users/<int:page>', methods=['GET'])
def list_users(page):
    users = User.query.all()
    print(page) # the page argument contains the integer passed in the URL.
    return jsonify(users=[i.serialize() for i in users])

Выше будет напечатано 1, если запрос был сделан к конечной точке /users/1. Однако, если вы выберете этот подход, клиенту всегда нужно будет предоставить значение для страницы (т.е. запросы к конечной точке /user не будут работать, если вы не добавите другой маршрут для обработки этой конечной точки).

С другой стороны, параметры запроса позволяют сделать параметр страницы необязательным, используя тот же маршрут. Для параметров запроса ваш клиент будет делать запрос, используя формат запроса (например, /users?page=1). Чтобы использовать параметр запроса, вы должны настроить свой код следующим образом:

from flask import request

@api.route('/users', methods=['GET'])
def list_users():
    users = User.query.all()
    page = request.args.get('page', None)
    if page is None:
        # the page parameter was not given in the request, handle it accordingly
    else:
        # page parameter was in the request, handle it accordingly
    return jsonify(users=[i.serialize() for i in users])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...