如何生成接口的swagger文档



我已经在谷歌上搜索过了,但所有swagger文档的示例都使用类。我想包括接口,因为读者感兴趣的是API而不是实现。

这是我的代码:

包含所需的maven依赖项:

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>

我的SpringBootApplication:

package com.manojk.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

我的RestController接口

package com.manojk.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/") // this annotation needed for swagger-ui to work
public interface HelloWorldControllerInterface {
@GetMapping
String helloWorld();
}

以及实现

package com.manojk.demo;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Component // this annotation needed to initialize this controller
public class HelloWorldController implements HelloWorldControllerInterface {
@Override
public String helloWorld(){
return "Hello World";
}
}

这一切都由所需的swagger配置支持:

package com.manojk.demo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import static springfox.documentation.builders.PathSelectors.regex;
/**
* Configuration class for Swagger REST API documentation
*
*/
@Configuration
@EnableSwagger2
/**
* Run nad hit http://localhost:8080/swagger-ui.html to see it working
*/
public class SwaggerConfig {
/**
* @return Swagger Docker
*/
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
// .apis(RequestHandlerSelectors.basePackage("com.siemens.oss.domain.controller.service")) # does not work for interfaces
.apis(RequestHandlerSelectors.basePackage("com.manojk.demo")) // works for implementations
.paths(regex("/.*"))
.build();
}
}

该代码可作为maven项目在https://github.com/MKhotele/spring-examples/tree/master/demo.

http://localhost:8080/swagger-ui.html显示"Hello World Controller";但"Hello World控制器接口"没有任何内容。

有可能使swagger包含接口吗?怎样

Segii Zhevzhyk在评论中提供了提示。谢谢

这不应该是可能的,因此也是不可能的。

OpenAPI规范(以前的Swagger规范(不仅仅是关于RESTAPI的规范。这也是关于与他们互动。接口永远不能公开与之交互的端点;但仅仅是一种实现。

Swagger是一组围绕OpenAPI构建的开源工具可以帮助您设计、构建、记录和消费的规范REST API

如OpenAPI规范简介中所述,

OpenAPI规范(OAS(定义了一个与语言无关的标准RESTful API的接口,它允许人类和计算机发现并了解无需访问的服务功能源代码、文档或通过网络流量检查。如果定义正确,消费者可以理解具有最少实现逻辑的远程服务。

最新更新