Ошибка при загрузке статического контента с использованием AKKA-HTTP Java - PullRequest
0 голосов
/ 06 октября 2018

Я впервые пробую AKKA-Http в Java (akka-http_2.12 v 10.1.5, akka-stream_2.12 v 2.5.17), но не могу загрузить статический контент для swaggerUI.Я добавил маршруты ниже и смог достичь конечных точек чванства json и yaml через http://localhost:8080/api-docs/swagger.json и http://localhost:8080/api-docs/swagger.yaml Однако конечная точка пользовательского интерфейса swagger, то есть http://localhost:8080/swagger, возвращается с Произошла внутренняя ошибка сервера. ', хотя у меня есть каталог swagger-ui в папке src / main / resources.Я проверил журналы и не совсем понимаю, что происходит .. похоже на ошибку в функциях getFromResource и getFromResourceDirectory. О подобной проблеме сообщалось ранее

Route createRoute() {
        return route(
                path(PathMatchers.segment(generator.apiDocsPath()).slash("swagger.yaml"),
                () -> get(() -> complete(generator.generateSwaggerYaml()))),
                path(PathMatchers.segment(generator.apiDocsPath()).slash("swagger.json"),
                        () -> get(() -> complete(generator.generateSwaggerJson()))),
                path("swagger", () -> route (
                        getFromResource("swagger-ui/index.html"),
                        getFromResourceDirectory("swagger-ui")
                        )
                )
        );
    }

akka-spring-docker-system | 2018-10-06 08:27:11.292 ERROR 9 --- [lt-dispatcher-8] akka.actor.ActorSystemImpl               : Error during processing of request: 'java.lang.NullPointerException (No error message supplied)'. Completing with 500 Internal Server Error response. To change default exception handling behavior, provide a custom ExceptionHandler.
akka-spring-docker-system | 
akka-spring-docker-system | java.lang.NullPointerException: null
akka-spring-docker-system |     at akka.http.scaladsl.server.directives.FileAndResourceDirectives$ResourceFile$.apply(FileAndResourceDirectives.scala:286) ~[akka-http_2.12-10.1.5.jar!/:10.1.5]
akka-spring-docker-system |     at akka.http.scaladsl.server.directives.FileAndResourceDirectives.$anonfun$getFromResource$2(FileAndResourceDirectives.scala:106) ~[akka-http_2.12-10.1.5.jar!/:10.1.5]
akka-spring-docker-system |     at scala.Option.flatMap(Option.scala:171) ~[scala-library-2.12.4.jar!/:na]
akka-spring-docker-system |     at akka.http.scaladsl.server.directives.FileAndResourceDirectives.$anonfun$getFromResource$1(FileAndResourceDirectives.scala:106) ~[akka-http_2.12-10.1.5.jar!/:10.1.5]

1 Ответ

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

Отвечая на мой вопрос, я получил это, добавив BOOT-INF к пути, как показано ниже

 return route(
                path(PathMatchers.segment(generator.apiDocsPath()).slash("swagger.yaml"),
                () -> get(() -> complete(generator.generateSwaggerYaml()))),
                path(PathMatchers.segment(generator.apiDocsPath()).slash("swagger.json"),
                        () -> get(() -> complete(generator.generateSwaggerJson()))),
                pathPrefix("swagger", () -> route ( // everything that's inside `/swagger`
                        pathEndOrSingleSlash(() -> getFromResource("BOOT-INF/classes/swagger-ui/index.html")), // `/swagger/` or `/swagger`
                        getFromResourceDirectory("BOOT-INF/classes/swagger-ui") // everything else in `/swagger/...`
                )
        ));
...