use*_*119 7 java spring gradle spring-boot
这是我的代码:我从 application.properties 文件 SwaggerConfig.java 获取所有值
@Configuration
@EnableSwagger2
@Profile("!prod")
@PropertySource(value = { "classpath:application.properties" })
public class SwaggerConfig {
@Value("${swagger.api.title}")
private String title;
@Value("${swagger.api.description}")
private String description;
@Value("${swagger.api.termsOfServiceUrl}")
private String termsOfServiceUrl;
@Value("${swagger.api.version}")
private String version;
@Value("${swagger.api.controller.basepackage}")
private String basePackage;
@Bean
public Docket postMatchApi() {
return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage(basePackage))
.paths(PathSelectors.ant("/**")).build().apiInfo(metaData());
}
private ApiInfo metaData() {
return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl)
.version(version).build();
}
Run Code Online (Sandbox Code Playgroud)
这是我的 springboot 初始化程序:
@SpringBootApplication
@ComponentScan(basePackages = { "com.example.demo" })
@ComponentScan(basePackageClasses = {AppInitializer.class, SwaggerConfig.class})
@EnableAsync
@EnableRetry
public class AppInitializer{
public static void main(String[] args) {
SpringApplication.run(AppInitializer.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
ServletInitializer.java
public class ServletInitializer extends SpringBootServletInitializer implements WebApplicationInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(PostMatchAppInitializer.class);
}
}
Run Code Online (Sandbox Code Playgroud)
日志说它已映射:
[INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[],methods=[POST],consumes=[application/json],produces=[application/json]}" onto public <T> org.springframework.http.ResponseEntity<?> com.,org.springframework.validation.BindingResult) throws java.lang.Exception
[INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/v2/api-docs],methods=[GET],produces=[application/json || application/hal+json]}" onto public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)
[INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/swagger-resources/configuration/ui]}" onto org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.UiConfiguration> springfox.documentation.swagger.web.ApiResourceController.uiConfiguration()
[INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/swagger-resources]}" onto org.springframework.http.ResponseEntity<java.util.List<springfox.documentation.swagger.web.SwaggerResource>> springfox.documentation.swagger.web.ApiResourceController.swaggerResources()
[INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/swagger-resources/configuration/security]}" onto org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.SecurityConfiguration> springfox.documentation.swagger.web.ApiResourceController.securityConfiguration()
[INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
[INFO ] 2018-01-17 16:46:37.071 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
[INFO ] 2018-01-17 16:46:37.227 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5e89f6: startup date [Wed Jan 17 16:46:34 CST 2018]; root of context hierarchy
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
[WARN ] 2018-01-17 16:46:42.217 [http-nio-8082-exec-1] o.s.w.s.PageNotFound - No mapping found for HTTP request with URI [/example/swagger-ui.html] in DispatcherServlet with name 'dispatcherServlet'
Run Code Online (Sandbox Code Playgroud)
小智 22
对于新的 Springfox 版本(3.0.0),您需要做一些不同的事情
在 pom.xml 中添加以下依赖项
*
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
而不是两个 for
<artifactId>springfox-swagger2</artifactId> and
<artifactId>springfox-swagger-ui</artifactId>
并访问 ../swagger-ui/ 而不是 ../swagger-ui.html
我发现了问题所在,在其中一个配置文件中,我以某种方式具有 @EnableMvc 注释,因为 dispatcherservlet 正在寻找映射 /example/swagger-ui.html 并且由于找不到映射,因此它抱怨“没有映射成立”。
删除@EnableMvc 后,它工作得很好。
小智 6
对于像我这样仍然出现“白标”页面错误的其他人,请检查您是否有:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在您的pom.xml文件中,不仅需要官方文档页面显示的“springfox-swagger2”依赖项,您还需要“springfox-swagger-ui”。
小智 6
我遇到了同样的问题。所以基本上如果你使用 spring 3 或更高版本然后打开 swagger 页面,你只需要做 3 件事。
在pom.xml中添加3个依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2 </artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
创建一个配置文件。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2);
}
Run Code Online (Sandbox Code Playgroud)
}
打开此链接以访问 API。
http://localhost:8080/swagger-ui/
现在只需匹配您错过的步骤即可。如果你被困在某个地方,一定要问一下。
小智 5
我英语不好,所以才用谷歌翻译。
\n\n那个版本和实现方式已经有点过时了,如果你希望自动生成文档,SpringDoc 简化了 API 文档的生成和维护,基于 OpenAPI 3 规范,适用于 Spring Boot 1.x 和 2.x 。应用程序。
\n\n为了让魔法发生,我们只需将依赖项添加到我们的 pom 中:
\n\n\n\n <dependency>\n <groupId>org.springdoc</groupId>\n <artifactId>springdoc-openapi-ui</artifactId>\n <version>1.2.32</version>\n </dependency>\n\nRun Code Online (Sandbox Code Playgroud)\n\n然后访问已有的描述http://localhost:8080/v3/api-docs/
\n\n对于招摇来说: http://localhost:8080/swagger-ui.html
\n\n这里的所有都是它的。
\n\n了解更多详情
\n\n如果你想自定义 api 信息,你可以包含 java 风格的注释:
\n\n\n\n @OpenAPIDefinition(\n info = @Info(\n title = "API personas", \n description = "Este es un ejemplo de servidor Personas-Server."\n + "Usted puyede encontrar mas acerca de Swagger " ++"[http://swagger.io](http://swagger.io) o en "\n + "[irc.freenode.net, #swagger](http://swagger.io/irc/).",\n termsOfService = "http://swagger.io/terms/", \n license = @License(\n name = "Apache 2.0", \n url = "http://springdoc.org"), \n version = "otra"\n ))\n @Tag(name = "persona", description = "API para personas")\n @RestController\n @RequestMapping("persona")\n public class PersonaRest extends GeneralRest {}\n\nRun Code Online (Sandbox Code Playgroud)\n\n也可以为特殊方法生成:
\n\n\n\n @Operation(\n summary = "traer todas las personas", \n description = "api para traer todas las personas, aqui no se tienen en cuenta paginaciones, ni filtros, trae todos los registros", \n tags = { "persona" }\n )\n @ApiResponses(\n value = {\n @ApiResponse(\n responseCode = "200", \n description = "Operaci\xc3\xb3n exitosa", \n content = @Content(\n mediaType = "application/json", \n array = @ArraySchema(\n schema = @Schema(\n implementation = PersonaTO.class\n )))),\n @ApiResponse(\n responseCode = "401", \n description = "Sin autorizaci\xc3\xb3n", \n content = @Content(\n mediaType = "application/json", \n schema = @Schema(\n implementation = Object.class\n ))),\n })\n @GetMapping\n public List personas() {\n return personaServicio.obtenerTodo();\n }\nRun Code Online (Sandbox Code Playgroud)\n\n使用最新的库和包含内容始终是一个好习惯。
\n| 归档时间: |
|
| 查看次数: |
17942 次 |
| 最近记录: |