如何在对Microsoft Azure App Services上托管的Flask-Web Service REST API的请求中指定app.route

时间:2018-07-12 18:12:26

标签: python azure flask azure-web-sites flask-restful

我已使用Docker文件将用Flask编写的Web服务部署到Microsoft Azure App Services。无需身份验证,可以匿名访问该应用。

现在,我想使用Web服务的URL从本地计算机的请求中发送一个json对象,并作为响应接收一个json对象。

Web服务中定义了2条不同的路由,可以在请求中解决。

@app.route('/json-example-Json', methods=['POST']) #GET-Requests get blocked
def json_example_json(): ...

@app.route('/json-example-blob', methods=['POST']) #GET-Requests get blocked
def json_example_blob(): ...

我要使用第一个路由,并且从本地PC上的脚本发送的请求如下所示:

headers = { "Content-Type":"application/json"}
body = str.encode(json.dumps(payload))    
request = urllib.request.Request("https://myfirstwebservice.azurewebsites.net/json-example-Json", body, headers)
try:
    response = urllib.request.urlopen(request)
    results = json.loads(response)
    print(results)

except:
    print("HTTP Error")

执行脚本时,出现以下错误:

  File "C:/Users/J/azure_service_broker.py", line 263, in <module>
    result = response.read()

NameError: name 'response' is not defined

我也尝试在末尾添加“ /”:

request = urllib.request.Request("https://myfirstwebservice.azurewebsites.net/json-example-Json/", body, headers)

,但它或多或少会导致相同的结果。 Web服务似乎甚至没有收到请求,因为我的Azure门户中的指标未显示任何活动。

我还尝试了没有路由说明的URL:

request = urllib.request.Request("https://myfirstwebservice.azurewebsites.net", body, headers)

在这种情况下,Web服务接收到请求,因为我可以监视传入的数据,但是由于它无法将其与app.routes之一匹配,因此不会发送响应。

如何使用请求中指定的路由之一访问URL?

0 个答案:

没有答案