jon*_*now 2 node.js swagger fastify fastify-swagger
我试图让 @Fastify/swagger 处理一个基本的 Fastify 项目,但每次我尝试访问 swagger 页面时,它都只是返回 404。
服务器.js:
const fastify = require('fastify')({logger: true})
const PORT = 3000
fastify.register(require('./routes/items'));
fastify.register(require('@fastify/swagger'), {
routePrefix: '/documentation',
exposeRoute: true,
swagger: {
info: {
title: { title: 'test'}
}
}
})
const start = async() => {
try {
await fastify.listen(PORT)
fastify.swagger()
} catch (error) {
fastify.log.error(error)
process.exit(1)
}
}
start()
Run Code Online (Sandbox Code Playgroud)
访问127.0.0.1/文档
在我的 package.json 中,我有以下依赖项:
"dependencies": {
"@fastify/swagger": "^8.1.0",
"@fastify/view": "^7.1.2",
"fastify": "^4.9.2",
"uuid": "^9.0.0"
}
Run Code Online (Sandbox Code Playgroud)
返回的错误是::“Route GET:/未找到文档”:{“statusCode”:404}
它缺少 @fastify/swagger-ui 包。
此外,加载顺序也很重要。server.js 中的路由需要在要求 swagger 之后出现,如下所示:
fastify.register(require('@fastify/swagger'), {})
fastify.register(require('@fastify/swagger-ui'), {
routePrefix: '/docs',
uiConfig: {
docExpansion: 'full',
deepLinking: false
},
uiHooks: {
onRequest: function (request, reply, next) { next() },
preHandler: function (request, reply, next) { next() }
},
staticCSP: true,
transformStaticCSP: (header) => header,
transformSpecification: (swaggerObject, request, reply) => { return swaggerObject },
transformSpecificationClone: true
})
fastify.register(require('./routes/item'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |