Connexion/Flask 应用程序:从请求中获取 base_path

Connexion/Flask application: get base_path from request

我有一个 connexion/flask/werkzeug 应用程序,我需要能够在请求期间获得“base_path”。例如:我的应用程序位于:http://0.0.0.0:8080/v1.0/ui/#/Pet,base_path 为:“http://0.0.0.0:8080/v1.0”。

我希望能够在请求者执行任何定义的操作(GET、POST、PUT 等)时获得 base_path。我一直无法找到获取基本路径的简单方法。通过 python 调试器,我可以看到 base_path 在堆栈的较高位置可用,但似乎对应用程序入口点不可用。



#!/usr/bin/env python3
import connexion
import datetime
import logging

from connexion import NoContent


PETS = {}


def get_pet(pet_id):
    pet = PETS.get(pet_id)

    # >>>--> I WANT TO GET THE BASE_PATH OF THE REQUEST HERE <--<<<

    return pet or ('Not found', 404)


由于 nda 原因我无法详细说明,我有此应用程序的多个 openapi 规范,了解请求的 base_path 对我来说很重要(因为它们不同)。如果有人能帮我想出一种方法来获得每个请求的 base_path,我将不胜感激:)

谢谢!

Flask文档

中参考这个topic传入请求数据

dump 使用 before_request 钩子传入的 request 并提取正确的 request.base_url 用于您的情况:

from flask import .., request

@bp.before_request
def dump_incoming_request():

    from pprint import pprint
    pprint(request.__dict__.items())

使用connexion.request.base_urlhttps://connexion.readthedocs.io/en/latest/request.html#header-parameters 您可以访问处理程序中的 connexion.request