超出了Swagger-UI最大调用堆栈大小->反向引用

gab6jxml  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(179)

当从swagger-ui调用我的swagger.json时,我得到一个错误:
超出最大调用堆栈大小
我想是因为我
所有者类型为UserToken
User,其令牌类型为Token
当使用在线版本的swagger编辑器时,它可以解析类型。我如何配置swagger来正确地解析类型?
完整的swagger.json

{
    "swagger": "2.0",
    "info": {
        "description": "Descr",
        "version": "1.0.0",
        "title": "Skeleton"
    },
    "host": "1.1.1.1:11",
    "basePath": "/api",
    "tags": [{
            "name": "auth"
        }
    ],
    "schemes": ["http"],
    "paths": {
        "/auth/local": {
            "post": {
                "tags": ["auth"],
                "summary": "Authenticates User",
                "description": "This auths only local users",
                "operationId": "authenticateUser",
                "consumes": ["application/json"],
                "produces": ["application/json"],
                "parameters": [{
                        "in": "body",
                        "name": "body",
                        "required": false,
                        "schema": {
                            "$ref": "#/definitions/Credentials"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "$ref": "#/definitions/AuthResponse"
                        }
                    }
                }
            }
        },
        "/auth/ldap": {
            "post": {
                "tags": ["auth"],
                "operationId": "authenticateLdapUser",
                "produces": ["application/json"],
                "parameters": [{
                        "in": "body",
                        "name": "body",
                        "required": false,
                        "schema": {
                            "$ref": "#/definitions/Credentials"
                        }
                    }
                ],
                "responses": {
                    "default": {
                        "description": "successful operation"
                    }
                }
            }
        }
    },
    "definitions": {
        "AuthResponse": {
            "type": "object",
            "properties": {
                "issued": {
                    "type": "string",
                    "format": "date-time"
                },
                "responseType": {
                    "type": "string",
                    "enum": ["RESPONSE", "ERROR", "UNAUTHORIZED", "OK"]
                },
                "responseDescription": {
                    "type": "string"
                },
                "accessToken": {
                    "$ref": "#/definitions/Token"
                },
                "resourceName": {
                    "type": "string"
                }
            }
        },
        "Note": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer",
                    "format": "int32"
                },
                "content": {
                    "type": "string"
                },
                "modified": {
                    "type": "string",
                    "format": "date-time"
                }
            }
        },
        "Token": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "expirationDate": {
                    "type": "string",
                    "format": "date-time"
                },
                "issued": {
                    "type": "string",
                    "format": "date-time"
                },
                "expired": {
                    "type": "boolean"
                },
                "owner": {
                    "$ref": "#/definitions/User"
                }
            }
        },
        "User": {
            "type": "object",
            "properties": {
                "username": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "displayName": {
                    "type": "string"
                },
                "notes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Note"
                    }
                },
                "accessToken": {
                    "$ref": "#/definitions/Token"
                }
            }
        },
        "Credentials": {
            "type": "object",
            "properties": {
                "user": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                }
            }
        }
    }
}
ttvkxqim

ttvkxqim1#

我有同样的问题,我删除了格式:日期-时间,错误就消失了。我仍然不知道是什么原因导致了错误。但是没有这个格式,一切都很好。

vqlkdk9b

vqlkdk9b2#

在FastAPI中使用了Swagger UI,我收到了同样的错误。我更新了FastAPI包以获得Swagger UI的最新版本,然后将'syntaxHighlight'的值设置为False,如下所示:

app = FastAPI(swagger_ui_parameters={'syntaxHighlight': False})

只需搜索如何在Swagger UI中直接设置此参数。这可能会解决您的问题。

相关问题