所以我有这个简单的后端点,应该在哪里进行一些解组
post {
path("/emails") {
import package.model.impl.RegularEmailJsonSupport._
entity(as[RegularEmail]) { regularEmail =>
storeInboundEmails(regularEmail).runDB.attempt.unsafeRunSync()
}
}
这是与 json 协议格式并列的模型类,我对 EmailStatus 字段的正确性没有多大信心
case class RegularEmail(
id: BigInt,
timestamp: DateTime,
senderEmailAddress: String,
originalRecipientsAddresses: List[String],
cc: List[String],
subject: String,
content: JsValue,
customerNumber: Int,
status: EmailStatus = EmailStatus.UNREAD,
originalSenderEmailAddress: String,
hasAttachments: Boolean = false
//metadata: Option[EmailMetadata]
) extends Email(
id = id,
timestamp = timestamp,
senderEmailAddress = senderEmailAddress,
originalRecipientsAddresses = originalRecipientsAddresses,
cc = cc,
subject = subject,
content = content,
status = status,
hasAttachments = hasAttachments,
sourceType = EmailSourceType.REGULAR //,
//metadata = metadata
) {
}
object RegularEmailJsonSupport extends DefaultJsonProtocol with SprayJsonSupport {
implicit val eventDataFormat = jsonFormat1(DateTime.apply)
implicit val statusFormat = jsonFormat1(EmailStatus.apply)
implicit val EmailFormat = jsonFormat11(RegularEmail.apply)
}
这些是我得到的错误
could not find implicit value for parameter um: akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller
could not find implicit value for evidence parameter of type RegularEmailJsonSupport.JF[P1] (Cannot find JsonWriter or JsonFormat type class for P1)
[error] implicit val statusFormat = jsonFormat1(EmailStatus.apply)
我还看到编译器没有抱怨 DateTime 的 jsonFormat,那么这个问题会是由 EmailStatus 引起的吗?
EmailStatus 是抽象类 Email 中的一个对象,它被 RegularEmail 继承,如下所示:
object EmailStatus extends Enumeration {
type EmailStatus = Value
val READ, UNREAD, CLOSED = Value
}