如何在Flask应用程序中创建动态子域 - python

我正在尝试在Flask应用程序中设置变量路由处理,例如此答案中所述:Dynamic Subdomain Handling in a Web App (Flask)

但是,我希望能够在某些子域被变量路由捕获之前对其进行识别,因此我可以使用flask-restful api扩展(Routing with RESTful)。

例如,我尝试了以下方法:

@app.route('/', subdomain="<user>", defaults={'path':''})
@app.route('/<path:path>', subdomain="<user>")
def user_profile(user,path):
    pass

class Api(restful.Resource):
    def get(self):
        #Do Api things.

api.add_resource(Api, '/v1', subdomain="api")

当我对此进行测试时,所有URL都进入变量路由处理程序并调用user_prof()。我尝试将api路由放在首位,将标准@app.route规则放在第二位,反之亦然,但没有任何变化。

我是否缺少其他参数或需要深入研究Flask才能做到这一点?

更新:

我尝试匹配的网址格式如下:

user1.mysite.com -> handled by user_profile()
user2.mysite.com -> handled by user_profile()
any_future_string.mysite.com -> handled by user_profile()
api.mysite.com/v1 -> handled by Api class

其他情况包括:

www.mysite.com -> handled by index_display()
mysite.com -> handled by index_display()

参考方案

@app.before_request
def before_request():
    if 'api' == request.host[:-len(app.config['SERVER_NAME'])].rstrip('.'):
        redirect(url_for('api'))


@app.route('/', defaults={'path': ''}, subdomain='api')
@app.route('/<path:path>', subdomain='api')
def api(path):
    return "hello"

这应该工作。如果需要,可以将您的api版本添加到路径中,或者可以由您的API类处理。

Flask Cors无法运作 - python

我正在尝试在Flask应用程序中启用CORS,但无论我把来源如何,似乎总是可以从浏览器访问URL。我不知道我做错了什么。这是我的代码from flask import Flask, jsonify from flask_cors import CORS app = Flask(__name__) CORS(app, resources={r'/*&…

flask:异常后停止服务器 - python

我想在发生未处理的异常时立即停止我的Flask服务器。这是一个例子:from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): 1/0 # argh, exception return 'Hello World!' i…

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

通过Python使用FacePlusPlus API - python

我收到以下错误。'error_message': 'BAD_ARGUMENTS 当我执行此python代码时。import requests import json response = requests.post( 'https://api-us.faceplusplus.com/facepp/v3/detect&#…

Python-使用请求时发布请求失败 - python

使用外壳程序时,我可以通过运行以下命令成功创建新用户curl --user administrator:pasword "Content-Type: application/json" https://localhost:8080/midpoint/ws/rest/users -d @user.json但是,当我尝试使用请求在python…