Тапир с загрузкой файла HTTP Akka - отправка «раннего» ответа 2xx до того, как был получен конец запроса
Для сервиса использую тапир + акка http. Одна из конечных точек загружает файлы.
val load
: Endpoint[Source[ByteString, Any], Any, Any, AkkaStreams] =
endpoint
.post
.in("load")
.in(streamBody(AkkaStreams)(
Schema(Schema.schemaForByteArray.schemaType),
CodecFormat.OctetStream()
))
.out(???)
Gettin предупредить
Отправка «раннего» ответа 2xx до того, как получен конец запроса
Как мне справиться с этим с помощью тапира?
1 ответ
Это проблема с akka-http: https://github.com/akka/akka-http/issues/2455
Ты используешь
Source
кусков в вашем коде? Akka-http потребляет сообщения, когда он потребляется, он отправляет ответ, даже не потребляя, который приходит после.
не потребляется,
messageEndPending
установлен на
true
отсюда и предупреждение о раннем реагировании.
Я обошел это, отфильтровав
LastChunk
и объединяя его до конца потока - после и, таким образом, заставляя akka-http потреблять
MessageEnd
.