2015-01-20 4 views
2

Как я могу решить проблему с отсутствием статического содержимого при обслуживании html из Spray (или Akka-Http)? Базовый URL моей службы - /api (хотя в этом случае это не имеет значения).Загруженный html запрашивает статический контент из родительского каталога

Вот мой маршрут

get { 
    pathPrefix("swagger") { 
    pathEndOrSingleSlash { 
     getFromResource("swagger-ui/index.html") 
    } ~ 
     getFromResourceDirectory("swagger-ui") 
    } 
} 

Loaded HTML можно найти CSS и JS файл, когда я открываю его как

/api/swagger/

, но когда я открываю

/api/swagger (без пробелов)

загружен htm л пытается получить содержание от

/api/css/reset.css вместо /api/swagger/css/reset.css

Как я должен переписать свой маршрут, чтобы покрыть оба случая?

+0

Привет .. вы получили чванство работать с Аккой-клиент еще? есть пример для спрей + чванство в видовом активаторе ... но akka-http новее, поэтому я надеюсь найти пример для этого. спасибо заранее -/chris –

+0

Отвечая на мой собственный вопрос ... похоже, что интеграция хардгеров не входит в список приоритетов команд akka-http @ в данный момент. я, вероятно, буду придерживаться спрей на время. > https://github.com/akka/akka/issues/16591 -cb –

+0

@ChrisBedford Вряд ли команда Akka проведет время на этом. Я сильно использую оба, и я должен сказать вам, что команда Swagger фантастически не отвечает, не исправляйте ошибки, о которых я сообщал в течение нескольких месяцев, и т. Д. Они плохо поддерживают дженериков, вы не можете автоматически поддерживать Akka/Spray DSL и т. Д. Один из их выводы даже закрывают мои сообщения об ошибках замечаниями типа «это работает для меня». Wtf. Поэтому имейте в виду все это. На самом деле это плохой проект, от которого зависит. – expert

ответ

2

В итоге я добавил перенаправление. Если кто-то знает более элегантное решение, напишите.

pathPrefix("swagger") { 
    CachingDirectives.cachingProhibited { 
    pathEnd { 
     redirect("/api/swagger/", StatusCodes.TemporaryRedirect) 
    } ~ 
     pathSingleSlash { 
     getFromResource("swagger-ui/index.html") 
     } ~ 
     getFromResourceDirectory("swagger-ui") 
    } 
}