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

Spring Boot-Spring数据REST从存储库生成swagger文档

郎灿
2023-03-14

我在Spring Boot中有一个带有Spring Data Rest的应用程序,我正在尝试使用Swagger maven插件生成带有Swagger的文档。生成控制器文档时没有问题,但存储库没有问题。

我已经在pom中配置了如下形式的swagger maven插件。xml:

                <plugin>
                <groupId>com.github.kongchen</groupId>
                <artifactId>swagger-maven-plugin</artifactId>
                <version>3.1.6</version>
                <configuration>
                    <apiSources>
                      <apiSource>
                            <springmvc>true</springmvc>
                            <locations>
                                <location>com.abelendo.repository</location>
                                <location>com.abelendo.controller</location>
                            </locations>
                            <schemes>http</schemes>
                            <host>localhost:8080</host>
                            <basePath>/</basePath>
                            <info>
                                <title>Swagger Maven Plugin Spring Boot for cars</title>
                                <version>v1</version>
                                <description>Working sample of Spring Boot for cars annotations</description>
                                <termsOfService>
                                    http://www.github.com
                                </termsOfService>
                                <contact>
                                    <email>abelendo@email.com</email>
                                    <name>Abelendo Cars</name>
                                    <url>http</url>
                                </contact>
                                <license>
                                    <url>http://www.license.com</url>
                                    <name>License name</name>
                                </license>
                            </info>
                            <!-- Support classpath or file absolute path here.
                            1) classpath e.g: "classpath:/markdown.hbs", "classpath:/templates/hello.html"
                            2) file e.g: "${basedir}/src/main/resources/markdown.hbs",
                                "${basedir}/src/main/resources/template/hello.html" -->
                            <templatePath>${basedir}/templates/strapdown.html.hbs</templatePath>
                            <outputPath>${basedir}/generated/document.html</outputPath>
                            <outputFormats>yaml</outputFormats>
                            <swaggerApiReader>com.github.kongchen.swagger.docgen.reader.SpringMvcApiReader</swaggerApiReader>
                            <swaggerDirectory>generated/swagger-ui</swaggerDirectory>
                        </apiSource>
                    </apiSources>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

我的随身携带物品:

@Api(tags = "CarsRepo")
@RepositoryRestResource(path = "cars")
public interface CarRepository extends CrudRepository<Car, Long> {

<S extends Car> S save(@Valid S cars);

}

是否可以用swagger-maven-plugin生成存储库留档?

共有2个答案

公羊学义
2023-03-14

我在pom中只有1个依赖项。xml

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-data-rest -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-data-rest</artifactId>
        <version>3.0.0</version>
    </dependency>

然后导入@导入(SpringDataRestConfiguration.class)在资源库中

并生成文档

年烈
2023-03-14

为了为@RepositoryRestResources生成swagger留档,您需要做的就是:

  1. 拔掉木卫一。springfox:项目中的springfox数据rest依赖关系
@Configuration
@EnableSwagger2
@Import(SpringDataRestConfiguration.class)
public class SwaggerConfig {

  @Bean
  public Docket api() { ... }

}

编辑:swagger配置类不适用于spring boot 2.0、spring data 2.0和spring data rest 3.0:swagger中存在一个公开问题(链接到swagger不是Java8,而spring boot和spring data是Java8)。详情请参见此处:https://github.com/springfox/springfox/issues/2298.

然而,我通过修补几个招摇过市的类成功地解决了这个问题。该补丁背后的想法是使用JavaOptional,而不是Guava和Java反射。补丁类包括:

  • springfox.documentation.spring.data.rest.实体服务提供商
  • springfox.documentation.spring.data.rest.EntityContext
  • springfox.documentation.spring.data.rest.实体DeleteExtrator
  • springfox.documentation.spring.data.rest.实体FindAllExtrator
  • springfox.documentation.spring.data.rest.实体FindOneExtrator
  • springfox.documentation.spring.data.rest.实体保存提取器
 类似资料:
  • 现在,当调用“/comments/1”时,我得到了404个错误,所以数据rest没有公开我的存储库。主要问题是“如何模拟存储库方法从数据库中获取数据?” 我的测试类: 据我所知,使用MockBean注释我替换了当前的存储库bean并且它不会被数据rest公开,我们有没有办法将数据预填充到db或存储库方法的模拟调用?

  • 正如标题所说,当我将spring数据rest存储库添加到现有的spring数据rest webmvc项目中时,我开始在项目运行中出错。 我试图使用@ConvertBy(MyConverter.class)在实体中遵循此链接进行嵌入ID转换。然而,仅仅添加jar就会导致以下错误和大量o. s. c. i. s. PathMatchingResourcePatterResolver日志。

  • 我有一个麻烦与Springfox昂首阔步2为我的API留档。它无法识别我的Rest存储库(JpaRepository/PagingAndSortingRepository)。 甚至我也尝试添加下面这样的招摇注释,但没有成功 而HAL浏览器可以识别我的Rest存储库。有人能帮我吗?这是我对pom的依赖, 这是我的靴子课, 当我添加时,在应用程序启动时出现以下错误

  • 我想用springboot项目生成MySQL数据库。我创建了一个maven项目,这是pom.xml:

  • 问题内容: 我有使用Java的JAX-RS / Jersey开发的REST API。我想为其转换/生成基于Swagger的UI文档。有人可以简单的方式告诉我精确的步骤吗?很抱歉,他们网站上的步骤对我来说并不清楚。 问题答案: 有几种方法可以将swagger-core与您的应用程序集成,但是根据您的描述,我将按照https://github.com/swagger- api/swagger-core