【问题标题】:Flask inside docker does not get json requestsdocker里面的Flask没有收到json请求
【发布时间】:2021-11-24 06:08:26
【问题描述】:

我的烧瓶应用程序,它在 docker 容器中工作,没有收到 json 请求。 当我发送 json 请求时,我得到元组作为响应,看起来像这样(省略号,省略号)

我的端点

class WhoisInfo(Resource):
    def post(self):
        if request.method == "POST":
           logger.debug("got request method POST")
        if request.is_json:
            logger.debug("is json")
            logger.debug(request.args.get('host'))
            logger.debug(request.get_data())
    return {"error": "Not information about this zone "}, 400
api_v1.add_resource(WhoisInfo, "/api/whois/")

调试输出

backend_1  | 2021-10-03 13:03:30.582 | DEBUG    | api.views:post:53 - got request method POST
backend_1  | 2021-10-03 13:03:30.583 | DEBUG    | api.views:post:55 - is json
backend_1  | 2021-10-03 13:03:30.583 | DEBUG    | api.views:post:56 - (Ellipsis, Ellipsis)
backend_1  | 2021-10-03 13:03:30.583 | DEBUG    | api.views:post:57 - b'{"host": "8.8.8.8"}'

我的请求

import requests

url = "http://127.0.0.1:80/api/whois/"

payload={"host": "8.8.8.8"}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)


【问题讨论】:

  • 而不是 data=payload 使用 json=payload 并删除您的自定义标题。然后在你看来使用request.json。
  • 我做到了,但错误是一样的

标签: python flask flask-restful


【解决方案1】:

这个问题来自错误的Flask版本,我使用了python3.8和Flask 0.10.1,我将Flask版本更改为2.0.2,一切正常。

【讨论】:

  • 是 100% 因为这个旧版本的烧瓶和 python 之间存在冲突。在任何情况下,我都是这样修复的,而 docker 与它无关,我在本地机器上创建了一个干净的环境并得到了完全相同的错误,那时我意识到我的包是问题所在。
猜你喜欢
  • 2016-03-18
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 2012-07-19
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
相关资源
最近更新 更多