我的 swagger.yml 文件包含对参数和模式的单独文件的引用:
components:
schemas:
User:
$ref: 'http://servername/schemas.yml/#/User'
parameters:
email:
$ref: 'http://servername/parameters.yml/#/email'
parameters.yml 文件中的 email 参数示例:
email:
name: "email"
description: "email of a user"
in: path
required: True
schema:
type: "string"
我的 single_path_apis.yml 文件包含用于 API 调用的不同 CRUD 函数:
user_by_email:
get:
operationId: "routes.users.fetch_user"
tags:
- Users
summary: "Queries specific user in the database"
parameters:
- $ref: 'http://servername/parameters.yml/#/email'
responses:
"200":
description: "Queried user"
在 swagger.yml 文件中,我使用以下方式导入上面的函数:
paths:
/user/{email}:
$ref: 'http://servername/single_path_apis.yml/#/user_by_email'
当我尝试启动我的应用程序时,出现以下错误:“path_parameters = (p for p in self.parameters if p["in"] == "path")"。
这种情况发生在所有像“/path/{parameter}”这样的路径上,但不会发生在像“/path”这样的路径上(模式被正确导入,所以不确定参数哪里出了问题)...
打印出读入的参数时,我得到 [{'$ref': 'http://servername/parameters.yml/#/email'}],所以我认为参数没有被解析。
您的 uri 似乎不正确
$ref
uri 需要在文件名末尾包含 #
,然后您就可以引用子模式。
例如
components:
schemas:
User:
$ref: 'http://servername/schemas.yml#/User'
parameters:
email:
$ref: 'http://servername/parameters.yml#/email'