问题描述
我有以下api文档:
swagger: "3.0"
info:
version: 0.0.1
title: Test API
paths:
/users:
get:
summary: Get all registered users
produces:
- application/json
responses:
200:
description: Users successfully returned
403:
description: User not authorised to call this API
schema:
$ref: 'components.yaml#/components/schemas/AuthError'
在单独的Yaml文件(称为components.yaml)中定义了AuthError模式的地方:
Where the AuthError schema is defined in a separate yaml file called components.yaml:
components:
schemas:
AuthError:
type: object
properties:
error:
type: sting
description: Error message
和Swagger配置:
And the Swagger configurations:
const swaggerDefinition = {
info: {
title: 'FlexiWAN REST API documentation',
version: '1.0.0',
description: 'This is the REST API for FlexiWAN management',
},
components: {},
host: 'local.flexiwan.com:3443',
basePath: '/api',
securityDefinitions: {
JWT: {
type: 'apiKey',
in: 'header',
name: 'Authorization',
description: "",
}
}
};
const options = {
swaggerDefinition,
apis: ['./swagger/**/*.yaml'],
};
const swaggerSpec = swaggerJSDoc(options);
app.use('/docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
但是当我尝试访问Swagger UI时,出现以下错误:
But when I try to access Swagger UI I get the following error:
路径/users.get.responses.403.schema.$ref上的解析器错误无法解析参考:试图在没有basePath的情况下解析相对URL.路径:"components.yaml" basePath:未定义"
Resolver error at paths./users.get.responses.403.schema.$refCould not resolve reference: Tried to resolve a relative URL, without having a basePath. path: 'components.yaml' basePath: 'undefined'
我在这里想念什么?
推荐答案
所以我设法使用这个很棒的资源:
我要做的就是在API文档文件的末尾添加对组件的引用,并相应地更改模式引用:
All I had to do is to add a reference to the components at the end of the API documentation file, and change the schema reference accordingly:
403:
description: User not authorised to call this API
schema:
$ref: '#components/schemas/AuthError'
components:
$ref: './components.yaml'
这篇关于无法引用Swagger中单独文件中定义的组件架构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!