猿问

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

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


陪伴而非守候
浏览 111回答 2
2回答

LEATH

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

拉莫斯之舞

从文档中参考这个主题(传入请求数据)Flask和带有钩子dump的传入并为您的情况提取正确的例如:requestbefore_requestrequest.base_urlfrom flask import .., request@bp.before_requestdef dump_incoming_request():&nbsp; &nbsp; from pprint import pprint&nbsp; &nbsp; pprint(request.__dict__.items())
随时随地看视频慕课网APP

相关分类

Python
我要回答