【发布时间】:2017-12-26 19:45:28
【问题描述】:
我们如何在客户端的akka中创建multipart/mixed请求?
multipart/form-data 与multipart/mixed 有 99% 的相似性,但是 akka-http 只为前者提供便利方法,而不是后者,尽管它们有相似之处。
val jsonPayload = DataSourceSingleUploadRequest(
"datasource-name",
"datasource-username",
"datasource-password",
)
import io.circe.generic.auto._, io.circe.syntax._
def createEntity: RequestEntity = {
val fileFormPart = Multipart.FormData.BodyPart.fromPath("datasource", ContentTypes.`application/octet-stream`, Paths.get(extractFilePath))
val jsonRequestFormPart = Multipart.FormData.BodyPart("request_payload", HttpEntity(ContentTypes.`application/json`, jsonPayload.asJson.noSpaces))
Multipart.FormData(
fileFormPart,
jsonRequestFormPart
).toEntity()
}
理想的方式是拥有Multipart.MixedData。我已经尝试了几种解决方案来替换 mediaType,但都没有成功:
- 类和特征是密封的,所以我不能覆盖
- 无法创建
Multipart特征的自定义实现(重用Multipart-Formdata的 99%),因为Multipart.Formdata使用私有代码。
我很短,我希望帮助创建与multipart/form-data 99% 相似的multipart/mixed 请求。
PS:服务器并没有真正接受multipart/form-data:/
编辑:为了完整起见,DataSourceSingleUploadRequest 是一个案例类,我使用的是 circe
【问题讨论】:
标签: scala akka content-type akka-http