当前位置: 首页 > 知识库问答 >
问题:

如何为接口生成swagger文档?

端木野
2023-03-14

我谷歌了一下,但是所有关于昂首阔步留档的例子都使用了类。我想包括接口,因为读者感兴趣的是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>

我的SpringBoot应用程序

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";
    }
}

这一切都由所需的昂首阔步配置支持:

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 Controller Interface"。

有可能使招摇过市包括接口吗?怎样

共有1个答案

呼延德华
2023-03-14

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

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

OpenAPI规范(以前称为Swagger规范)不仅仅是关于RESTAPI的规范。这也是与他们互动的过程。接口永远不能公开与之交互的endpoint;但这只是一个实现。

Swagger是一套围绕OpenAPI规范构建的开源工具,可以帮助您设计、构建、记录和使用REST API。

正如OpenAPI规范简介中所述,

OpenAPI规范(OAS)定义了一个标准的、与语言无关的RESTful API接口,它允许人类和计算机在不访问源代码、留档或流量检查的情况下发现和理解服务的功能。如果定义正确,消费者可以理解远程服务并与之交互,只需最少的实现逻辑。

 类似资料:
  • CabalPHP 支持接口文档自动生成。 编写好相关配置和文档注释后浏览器访问 http://127.0.0.1:9501/__docs 即可查看相关文档,注意检查自己的监听端口和IP。 点击这里访问示例文档 接口文档地址只能在debug环境(cabal.debug配置为true)下访问。 配置 文档相关配置在 conf/cabal.php // ... 'document' =

  • 我有一个Spring启动的MVC java网络应用程序。我已经能够为API留档集成Springfox。当服务器启动并运行时,我可以直观地看到所有的API。 我如何生成离线的swagger API文档?注意:我不想使用AsciDoc或markdown文档,但我希望在html文件中使用相同的swagger API用户界面。我希望链接是相对于本地目录的,而不是相对于本地主机服务器链接的。谢谢

  • 我寻找一些配置,我可以改变接口的名称,已生成,但没有找到解决方案。 对此有什么想法吗??

  • 支持在项目中使用 Swagger 注解语法,运行命令,生成 Swagger 文件。 Swagger 是最流行的 API 开发工具,它遵循 OpenAPI Specification(OpenAPI 规范,也简称 OAS)。 Swagger 可以贯穿于整个 API 生态,如 API 的设计、编写 API 文档、测试和部署。 Swagger 是一种通用的,和编程语言无关的 API 描述规范。 imi-

  • 更改历史 * 2018-02-13 邢足健 无过滤条件时,省略filters传参,修改下划线格式字段为驼峰 * 2018-03-06 邢足健 添加批量创建与批量删除接口 * 2018-03-19 管鹏波 基于filters增加或的查询 1.查询接口 * /tables 获取列表,接口名为表名的复数形式 @param pageNo 整数,如1

  • 我在一个带注释的对象中有几个枚举,如: 其中枚举定义为: 使用Openapi3,我可以生成一个swagger文档。我的问题是,和,翻译方式不同,如: 我希望< code>Enum2与< code>Enum1一样被记录,因此具有实际的枚举值。有什么方法可以强制这样做,或者解释为什么会这样?两个枚举基本上与示例中的相同。