Обслуживание Весенний Отдых документы - PullRequest
0 голосов
/ 31 октября 2018

У меня есть следующая конфигурация Spring Rest Docs maven, в результате чего мои сгенерированные документы заканчиваются в WEB-INF/classes/static/docs при упаковке моего приложения Spring Boot.

 <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 обслуживать html из файла WAR в WEB-INF/classes/static/docs?

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Попробуйте использовать Swagger (по адресу https://swagger.io/) для документации. Вы можете разместить документацию по своим API-интерфейсам и автоматически обновляться при каждом обновлении API-интерфейсов (это уменьшает нагрузку на обновление документации при каждом обновлении API-интерфейсов). ).
Кроме того, статическая папка предназначена для подключения View к Spring API, я не рекомендую сохранять в ней какие-либо файлы.

0 голосов
/ 01 ноября 2018

Моя ошибка была в том, что я пытался обслуживать html с контроллера. Файлы, которые заканчиваются на WEB-INF/classes/static, предназначены для прямого доступа и не разрешаются, когда контроллеры ищут представление. Я смог получить доступ к файлу напрямую с my-api/docs/my-api-doc.html

0 голосов
/ 31 октября 2018

В соответствии с документами Spring Boot статическое содержимое должно находиться в одном из четырех предопределенных местоположений. /WEB-INF/classes/static не является одним из них. Попробуйте переместить сгенерированные документы в /public или /META-INF/resources.

...