更改 Swagger-UI URL 前綴
一、概述
作為優秀的開發人員,我們已經知道文檔對於構建 REST API 至關重要,因為它可以幫助 API 的使用者無縫工作。今天大多數 Java 開發人員都在使用 Spring Boot .
截至今天,有兩個工具使用 Springfox 和 SpringDoc 簡化了Swagger API 文檔的生成和維護。
在本教程中,我們將了解如何更改這些工具默認提供的 Swagger-UI URL 前綴。
2. 使用 Springdoc 更改 Swagger UI URL 前綴
首先,我們可以檢查如何使用 OpenAPI 3.0 設置 REST API 文檔。
首先,按照上面的教程,我們需要添加一個條目來添加對SpringDoc的依賴:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.2</version>
</dependency>
swagger-ui 的默認 URL 為http://localhost:8080/swagger-ui.html.
讓我們看一下自定義 swagger-UI URL 的兩種方法,假設從/myproject
開始。
2.1.使用application.properties
文件
由於我們已經熟悉Spring
中的許多不同屬性,因此我們需要將以下屬性添加到application.properties
文件中:
springdoc.swagger-ui.disable-swagger-default-url=true
springdoc.swagger-ui.path=/myproject
2.2.使用配置類
我們還可以通過在配置文件中進行以下更改來完成此更改:
@Component
public class SwaggerConfiguration implements ApplicationListener<ApplicationPreparedEvent> {
@Override
public void onApplicationEvent(final ApplicationPreparedEvent event) {
ConfigurableEnvironment environment = event.getApplicationContext().getEnvironment();
Properties props = new Properties();
props.put("springdoc.swagger-ui.path", swaggerPath());
environment.getPropertySources()
.addFirst(new PropertiesPropertySource("programmatically", props));
}
private String swaggerPath() {
return "/myproject"; // TODO: implement your logic here.
}
}
在這種情況下,我們需要在應用程序啟動之前註冊監聽器:
public static void main(String[] args) {
SpringApplication application = new SpringApplication(SampleApplication.class);
application.addListeners(new SwaggerConfiguration());
application.run(args);
}
3. 使用 Springfox 更改 Swagger UI URL 前綴
我們可以通過使用 Swagger 設置示例和描述以及使用 Springfox 使用 Spring REST API 設置 Swagger 2 來了解如何設置 REST API 文檔。
首先,按照上面給出的教程,我們需要添加一個條目來添加對Springfox
的依賴:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
比方說,我們想將此 URL 更改為 http://localhost:8080/myproject/swagger-ui/index.html。讓我們回顧一下可以幫助我們實現它的兩種方法。
3.1.使用application.properties
文件
同樣,如上面的SpringDoc
示例,在application.properties
文件中添加以下屬性將幫助我們成功更改它。
springfox.documentation.swagger-ui.base-url=myproject
3.2.在配置中使用Docket
Bean
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/myproject", "/");
}
4. 添加重定向控制器
我們還可以向 API 端點添加重定向邏輯。在這種情況下,我們使用 SpringDoc 還是 Springfox 都沒有關係:
@Controller
public class SwaggerController {
@RequestMapping("/myproject")
public String getRedirectUrl() {
return "redirect:swagger-ui.html";
}
}
5.結論
在本文中,我們學習瞭如何使用 Springfox 和 SpringDoc 更改 REST API 文檔的默認 swagger-ui URL。
與往常一樣,可以在 GitHub 上找到本文的完整代碼示例。