Я занимаюсь разработкой микросервиса Lagom. В дополнение к его мясу у него есть несколько файлов stati c (index. html, *. css, *. js и favicon.ico). Я знаю, как установить заголовок Content-Type ответа, используя Lagom's ServerServiceCall[Req, Res]
. Однако, если в качестве типа параметра ответа указать String
, Content-Type будет перезаписан как «text / plain» независимо от того, что я установил в теле вызова службы. Если я использую akka.util.ByteString
, то Content-Type становится «application / octet-stream».
Я полагаю, что это должно быть потому, что этого требуют сериализаторы String
и ByteString
. Итак, мой вопрос: какие типы ответов я должен сделать, чтобы получить «text / html», «text / css», «application / javascript» и «image / vnd.microsoft.icon»? Или есть более общий c способ обслуживания активов c в Лагоме? Документация на это удивительно редка.
Хотелось бы что-то вроде этой работы:
import akka.util.ByteString
import com.lightbend.lagom.scaladsl.api.transport.MessageProtocol
import com.lightbend.lagom.scaladsl.api.deser.MessageSerializer.NegotiatedSerializer
class ContentTypeSerializer(contentType: String, charset: String) extends NegotiatedSerializer[String, ByteString] {
override val protocol = MessageProtocol(Some(contentType), Some(charset))
def serialize(body: String) = ByteString.fromString(body, charset)
}