Фреймворк Flask от входа до освоения пользовательского ответа (8)

Flask

Очки знаний: 1. Настройте информацию об ответе 2. Вернуть Джейсона

1. Обзор

Все мы знаем, что когда браузер инициирует запрос, сервер дает ответ. Этот ответ содержит возвращаемый тип контента, код состояния, версию сервера и т. д. Как показано ниже:

在这里插入图片描述
Если мы не изменим информацию ответа здесь, она вернет информацию по умолчанию.

2. Пользовательская информация об ответе

Если мы хотим настроить информацию ответа, мы должны вернуть кортеж и структуру данных, такую ​​как (ответ, статус, заголовки), по крайней мере, ответ. Статус указывает код состояния HTTP, который может быть кодом состояния в HTTP или пользовательским кодом состояния. заголовки относятся к дополнительным заголовкам ответа.

from flask import Flask, abort, Response

app = Flask(__name__)


@app.route('/')
def index():
    # return ('自定义响应信息', 502, {"name": "xiaosong", "age": 12})

    # 可以不加括号,会自动组装成元组
    # return '自定义响应信息', 502, {"name": "xiaosong", "age": 12}
    
    # 自定义状态码 可以加上描述信息
    return '自定义响应信息', '520 love error', {"name": "xiaosong", "age": 12}

if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000, debug=True)  # 运行程序

Давайте отладим его в браузере:

在这里插入图片描述

3. сделать_ответ

Приведенное выше возвращает информацию о пользовательском ответе, вы можете использовать функцию make_response. make_response(), эквивалентный HttpResponse в Django, имеет тот же эффект.

from flask import Flask, abort, Response, make_response

app = Flask(__name__)


@app.route('/')
def index():
    # return ('自定义响应信息', 502, {"name": "xiaosong", "age": 12})

    # 可以不加括号,会自动组装成元组
    # return '自定义响应信息', 502, {"name": "xiaosong", "age": 12}

    # 自定义状态码 可以加上描述信息
    # return '自定义响应信息', '520 love error', {"name": "xiaosong", "age": 12}
    resp = make_response()
    resp.headers['name'] = 'xiaosong'
    resp.status = '520 love error'
    return resp


if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000, debug=True)  # 运行程序

В-четвертых, jsonify

Когда мы делаем проекты разделения фронтенда и бэкенда, мы будем использовать ajax-запросы во фронтенде. Мы все используем JSON в качестве формата данных для внешнего и внутреннего взаимодействия.В Django есть JsonResponse, который может возвращать Json.В Flask мы используем jsonify для возврата Json.

from flask import Flask, jsonify

app = Flask(__name__)


@app.route('/')
def index():
    data = {
        'name': 'xiaosong',
        'age': 12,
        'gender': '女'
    }

    return jsonify(data)


if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000, debug=True)  # 运行程序

Давайте отладим его в браузере:

在这里插入图片描述

Добро пожаловать, чтобы обратить внимание на мой общедоступный номер:

image