You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行在Docker容器中的Flask应用无法正常获取JSON请求参数

问题根因及修复方案

服务端参数获取逻辑错误

你当前使用request.args.get('host')读取参数,request.args仅用于获取URL拼接的查询参数(例如/api/whois/?host=8.8.8.8形式的参数),你的参数存储在JSON请求体中,需要先解析JSON请求体再取值。
正确取值代码示例:

# 解析JSON请求体为Python字典
req_json = request.get_json()
# 从字典中读取host参数
host = req_json.get('host')
logger.debug(host)

你调试输出中出现的(Ellipsis, Ellipsis),就是因为request.args中不存在对应的host参数,框架返回了默认的省略号占位对象。

客户端请求写法优化

你当前使用data=payload传递JSON参数,仅当payload为JSON字符串时符合预期,如果直接传入字典,requests会默认将其转换为表单格式参数。更稳妥的写法是直接使用requests的json参数传值,无需手动设置Content-Type头,requests会自动完成JSON序列化和请求头配置:

import requests

url = "http://127.0.0.1:80/api/whois/"
payload={"host": "8.8.8.8"}
response = requests.post(url, json=payload)

修复后完整接口示例

class WhoisInfo(Resource):
    def post(self):
        logger.debug("got request method POST")
        # 先校验请求格式是否为JSON
        if not request.is_json:
            return {"error": "请求格式必须为JSON"}, 400
        # 解析JSON请求体
        req_json = request.get_json()
        host = req_json.get('host')
        # 校验必填参数
        if not host:
            return {"error": "缺少必填参数host"}, 400
        logger.debug(f"获取到的host参数为: {host}")
        # 此处补充你的whois查询逻辑
        return {"error": "Not information about this zone "}, 400
api_v1.add_resource(WhoisInfo, "/api/whois/")

内容的提问来源于stack exchange,提问作者user9682431

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:48:01