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

Swagger UI调用Python-Flask生成API报错:not enough values to unpack

解决Swagger Python-Flask Codegen生成API的"not enough values to unpack"错误

问题场景

通过Swagger Hub自动生成Python-Flask API服务端存根,测试POST /estimate端点时,触发以下报错:

ValueError: not enough values to unpack (expected 2, got 1)

错误根源分析

从报错栈可以定位到,错误发生在Connexion库的is_json_mimetype函数中:

maintype, subtype = mimetype.split('/')  # type: str, str

代码尝试将MIME类型按/拆分为主类型和子类型,但当前传入的MIME类型是application_json(无斜杠),拆分后仅得到1个值,因此触发异常。

问题根源是Swagger YAML文件中MIME类型书写错误:将标准JSON MIME类型application/json误写为application_json,导致Swagger UI生成的请求头Content-Type也使用了错误值,后端无法正确解析。

修复步骤

1. 修正Swagger YAML文件

将YAML中所有错误的application_json替换为标准的application/json,包括主POST端点和回调部分:

修改前的YAML片段:

requestBody:
  content:
    application_json: # 错误:应为application/json
      schema:
        $ref: '#/components/schemas/EJob'

修改后的YAML片段:

requestBody:
  content:
    application/json:
      schema:
        $ref: '#/components/schemas/EJob'

同时同步修正回调部分的MIME类型:

callbacks:
  statusUpdate:
    '{$request.body#/callback_url}':
      post:
        requestBody:
          content:
            application/json: # 修正此处
              schema:
                $ref: '#/components/schemas/EJobStatus'

2. 重新生成并部署代码

使用修正后的YAML文件在Swagger Hub重新生成Python-Flask服务端代码,替换原有代码后重启服务。

3. 验证请求

修正后,Swagger UI生成的curl请求会自动使用正确的Content-Type:

curl -X 'POST' \
  'http://localhost:8080/BLA/BLA/1.0.0/estimate' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "callback_url": "http://192.168.100.30:50/update_status",
  "id": 39,
  "script_url": "file:///data/39_script.json"
}'

此时后端可正确解析MIME类型,不会再触发拆分错误,API能正常处理请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:25:41