服务Spring Rest文档

时间:2018-10-31 16:31:51

标签: java spring maven spring-boot spring-restdocs

我具有以下Spring Rest Docs maven配置,这使我打包Spring Boot应用程序时生成的文档最终以WEB-INF/classes/static/docs结尾。

 <plugin>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <version>1.5.3</version>
                <executions>
                    <execution>
                        <id>generate-docs</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>process-asciidoc</goal>
                        </goals>
                        <configuration>
                            <backend>html</backend>
                            <doctype>book</doctype>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework.restdocs</groupId>
                        <artifactId>spring-restdocs-asciidoctor</artifactId>
                        <version>${spring-restdocs.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.outputDirectory}/static/docs
                            </outputDirectory>
                            <resources>
                                <resource>
                                    <directory>
                                        ${project.build.directory}/generated-docs
                                    </directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

然后我要在此控制器中为其提供服务(my-api-doc.html是生成的文档的名称)

@Controller
public class DocsController {

    @RequestMapping("/docs")
    private String docs() {
        return "my-api-doc";
    }

}

但是我得到了404。如何使我的Spring Boot应用程序从WEB-INF/classes/static/docs中的WAR文件中提供html?

3 个答案:

答案 0 :(得分:0)

根据Spring Boot docs,静态内容应位于四个预定义位置之一中。 /WEB-INF/classes/static不是其中之一。尝试将生成的文档移至/public/META-INF/resources

答案 1 :(得分:0)

我的错误是试图从控制器提供html。最终以WEB-INF/classes/static结尾的文件应直接访问,并且在控制器寻找视图时不会解析。我可以直接通过my-api/docs/my-api-doc.html

访问该文件

答案 2 :(得分:-1)

尝试使用Swagger(位于https://swagger.io/)进行文档编制。实际上,您可以托管API的文档,并在每次更新API时自动获取更新(这减轻了对API进行更新时更新文档的负担)。
另外,静态文件夹用于将View附加到Spring API,我建议不要在其中保存任何文件。