ben çalışıyorum Akka-http ve umarım birisi şu sorulara ışık tutabilir: birinciyi kabul dayalı farklı yolları oluşturmak nasıldırAkka-http: Kabul ve İçerik tipi işleme
: istekte başlık? Örneğin, "json" işlemek ve "xml" isteklerini işlemek için bir kod yolu istiyorum (başlık eksikse varsayılan olarak "json" için)
ContentType'ın istemesini istemediğim durumlarda ertelenir, nasıl belirleyebilirim? Örneğin, aşağıdaki kodda json'u compactPrint() ile çalıştırmaya çalışıyorum ancak bu onu bir dizgeye, dolayısıyla "text/plain" olarak değiştirir. Bunu geçersiz kılmak ve müşteriye hala json olduğunu söylemek istiyorum.
Benim kodum böyle bir şeydir;
...
path("api") {
get {
complete {
getStuff.map[ToResponseMarshallable] {
case Right(r) if r.isEmpty => List[String]().toJson.compactPrint
case Right(r) => r.toJson.compactPrint
case Left(e) => BadRequest -> e
}
}
}
}
...
Bu durumda yanıt text/plain, çünkü compactPrint bir dize oluşturur. eleştiri çok hoş geldiniz. ;)
aşağıdaki gibi içerik türü tanımlayabilirsiniz
Akka-http'un otomatik içerikli müzakere özelliğini kullanmak için, kaynak türünüz için birkaç içerik türüne göre marş kalacağınız bir kunduracı sağlamanız gerekir. Marshaller.oneOf'unu kullanarak, her bir mareşalin yalnızca bir içerik türüne nasıl karar verileceğini bildikleri farklı mareşallar oluşturmak için kullanabilirsiniz. Marshaller hakkındaki belgeleri http://doc.akka.io/docs/akka-stream-and-http-experimental/1.0/scala/http/common/marshalling.html#Custom_Marshallers adresinde gördünüz mü? – jrudolph
Teşekkürler. Bu rotayı bitirdim. –