我正在开发 Spring 应用程序,但在使用 Swagger 和 Spring Security 时遇到了一些问题。我必须添加一个特定的配置来允许几乎所有访问(CORS),到目前为止它运行良好,但不知何故它阻止了 Swagger....
这是我的 SwaggerConfiguration.java
@Configuration
@EnableSwagger2
@SwaggerDefinition(
info = @Info(
description = "Web Service",
version = "V0.0.1",
title = "Web Service",
contact = @Contact(
name = "Me",
email = "dev@me.com",
url = "https://www.me.com/"
)
),
consumes = {"application/json"},
produces = {"application/json"},
schemes = {SwaggerDefinition.Scheme.HTTP, SwaggerDefinition.Scheme.HTTPS}
)
public class SwaggerConfiguration {
/** List of Swagger endpoints (used by {@code WebSecurityConfig}) */
static final String[] SWAGGER_ENDPOINTS = {
"/v2/api-docs",
"/swagger-resources",
"/swagger-resources/**",
"/configuration/ui",
"/configuration/security",
"/swagger-ui.html",
"/webjars/**" …Run Code Online (Sandbox Code Playgroud) 我通过集成 Swagger 文档实现了一个简单的服务器。我的简单代码如下
const http = require('http');
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const bodyParser = require('body-parser');
const YAML = require('yamljs');
const serverPort = 8080;
const app = express();
const swaggerDoc = YAML.load('./api/swagger.yaml');
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDoc));
app.use(bodyParser.urlencoded({
extended: false,
}));
app.use(bodyParser.json());
http.createServer(app).listen(serverPort, function () {
console.log('Your server is listening on port %d (http://localhost:%d)', serverPort, serverPort);
console.log('Swagger-ui is available on http://localhost:%d/docs', serverPort);
});
Run Code Online (Sandbox Code Playgroud)
执行后node server.js,我访问http://localhost:8080/docs并得到
Cannot GET /docs/
Run Code Online (Sandbox Code Playgroud)
当然我swagger.yaml里面已经有文件了/api。请问这个问题有什么解决办法吗?
我正在使用 Swagger 编写 API 文档。我已经在我的 Express 项目上成功设置了 Swagger,但是只要端点位于 app.js 文件之外的另一个路由文件上,端点的文档就不会显示
下面是我的 App.js 文件
const express = require('express')
const port = process.env.PORT
const userRouter = require('./routers/user')
require('./db/db')
const app = express()
const swaggerJsDoc = require("swagger-jsdoc");
const swaggerUi = require("swagger-ui-express");
// Extended: https://swagger.io/specification/#infoObject
const swaggerOptions = {
swaggerDefinition: {
info: {
title: "MY API TITLE",
description: "API Documentation",
contact: {
name: "Cali"
},
servers: ["http://localhost:3000"]
}
},
// ['.routes/*.js']
apis: ["app.js"]
};
const swaggerDocs = swaggerJsDoc(swaggerOptions);
app.use("/api/doc", swaggerUi.serve, swaggerUi.setup(swaggerDocs, {explorer: true}));
app.use(express.json()) …Run Code Online (Sandbox Code Playgroud)我有 Swagger,效果很好。但我找不到将路由导出为 JSON 的方法。我记得这样做过,只需在浏览器中访问一个 URL,但现在我不记得了。
我的招摇设置是这样的:
const swaggerOptions = new DocumentBuilder()
.setTitle('Some API Docs')
.setDescription('Some API description')
.setVersion('1.0')
.build();
const swaggerDocument = SwaggerModule.createDocument(app, swaggerOptions);
SwaggerModule.setup('docs', app, swaggerDocument);
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令访问 Swagger UI: localhost:3000/docs
我已阅读官方文档,他们提到使用:
另外,我看了SO,有这个线程
不幸的是,这些都不适用于我的情况。
获取 JSON 格式文档的 URL 是什么?