0

我有一个 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 的方法,我将不胜感激:)

谢谢!

4

2 回答 2

1

使用connexion.request.base_url. https://connexion.readthedocs.io/en/latest/request.html#header-parameters您可以访问connexion.request处理程序内部

于 2020-06-30T02:08:08.910 回答
0

请参阅文档中的此主题传入请求数据Flask

和带有钩子dump的传入并提取正确的,例如为您的情况:requestbefore_requestrequest.base_url

from flask import .., request

@bp.before_request
def dump_incoming_request():

    from pprint import pprint
    pprint(request.__dict__.items())
于 2020-06-29T17:44:01.137 回答