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

Flask中通过Docstring为APISpec添加示例遇阻求助

问题解决方法

你的问题核心在于**$ref的YAML语法错误**,同时需要确保APISpec对OpenAPI 3.x的支持,具体修复步骤如下:

  • 修正Docstring中$ref的写法:YAML中以#开头的字符串必须加引号,否则会被解析为注释导致引用失效。修改后的Request配置如下:

    requestBody:
        required: true
        content:
          application/json:
            schema: Request
            examples:
              Example1:
                $ref: "#/components/examples/Example1"
    
  • 确认APISpec版本:必须使用支持OpenAPI 3.x的APISpec版本(建议v0.39.0及以上),组件示例引用是OpenAPI 3的特性,基于OpenAPI 2的旧版本不支持该语法。

  • 验证Schema注册:确保Request Schema已通过spec.components.schema正确注册,示例代码:

    spec.components.schema("Request", {
        "type": "object",
        "properties": {
            "field1": {"type": "string"},
            "field2": {"type": "integer"}
        }
    })
    
  • 完整的Spec初始化示例:

    from apispec import APISpec
    from flask_apispec import FlaskApiSpec
    from flask import Flask
    
    app = Flask(__name__)
    spec = APISpec(
        title='你的API',
        version='1.0.0',
        openapi_version='3.0.2',  # 必须指定OpenAPI 3版本
    )
    docs = FlaskApiSpec(app)
    
    # 注册Request Schema
    spec.components.schema("Request", {
        "type": "object",
        "properties": {
            "field1": {"type": "string"},
            "field2": {"type": "integer"}
        }
    })
    
    # 注册Example1组件
    spec.components.example('Example1', {
      "field1": "one",
      "field2": 2
    })
    
    # 注册蓝图接口文档
    docs.register(func, blueprint=blueprint_one)
    

完成以上修改后,Swagger UI即可正确引用你注册的Example1示例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:22:36