Я пробовал разные способы интеграции функций Azure для Python с платформой Flask.Наконец, я успешно выполнил свою функцию HttpTrigger с именем TryFlask
через app.test_client()
.
. Вот мой пример кода, как показано ниже.
import logging
import azure.functions as func
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/hi')
def hi():
return 'Hi World!'
@app.route('/hello')
@app.route('/hello/<name>', methods=['POST', 'GET'])
def hello(name=None):
return name != None and 'Hello, '+name or 'Hello, '+request.args.get('name')
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
uri=req.params['uri']
with app.test_client() as c:
doAction = {
"GET": c.get(uri).data,
"POST": c.post(uri).data
}
resp = doAction.get(req.method).decode()
return func.HttpResponse(resp, mimetype='text/html')
Для тестирования в локальной среде и Azure,получить доступ к URL /
, '/ hi' и /hello
через URL http(s)://<localhost:7071 or azurefunchost>/api/TryFlask
со строкой запроса ?uri=/
, ?uri=/hi
и ?uri=/hello/peter-pan
в браузере и выполнить метод POST
для того жеURL выше со строкой запроса ?uri=/hello/peter-pan
, все это работает.Пожалуйста, смотрите результаты, как на рисунке ниже, так и на облаке.
Примечание: в моемРешение, URL должен быть http(s)://<localhost:7071 or azurefunchost>/<routePrefix defined in host.json, default is api>/<function name>?uri=<uri defined in app.route, like / or /hi or /hello, even /hello/peter-pan?name=peter>
.