Akka HTTP, Spray Json и поля параметров не выполняются по мере необходимости - PullRequest
0 голосов
/ 16 октября 2018

У меня есть класс дела:

case class OpcTagPlaybook(name: String, tags: Seq[OpcTagAtTime], looped: Boolean, enabled: Option[String])

С необязательным включенным полем, которое будет содержать дату.Спрей Json описывает кодирование / декодирование:

implicit val opcTagPlaybookFormat = jsonFormat4(OpcTagPlaybook)

И маршрут в akka http:

post {
  entity(as[OpcTagPlaybook]) { playbook =>
    val playbookCreated: Future[_] =
      (opcTagPlaybookActor ? UpsertPlaybook(playbook))
    onSuccess(playbookCreated) { _ =>
      log.info("Created playbook [{}]", playbook.name)
      complete((StatusCodes.Created, "ok"))
    }
  }
})

По какой-то причине отправка без поля createAt завершается неудачно:

Отправка:

{"name": "test1",
"tags":[{"offset": 100, "tag": "hello", "value": "yo"}],
"looped": true
}

Сбои:

The request content was malformed:
Object is missing required member 'enabled'

И если я создаю сообщение, это вызывает у меня еще одну ошибку:

 {"name": "test1",
 "tags":[{"offset": 100, "tag": "hello", "value": "yo"}],
 "looped": true,
 "enabled": "2018-08-08"
 }

дает

The request content was malformed:
spray.json.JsString cannot be cast to scala.Option

Я предполагаю, что это некоторая взаимосвязь между akka http, и поэтому я собираюсь просто разобраться с вводом данных более вручную, но я просто хотел бы понять, что я здесь делаю неправильно.

...