Тело HTTP-запроса в виде объекта spray-json

Я хочу создать простую службу отдыха со спреем. Остальной сервис должен получить json-тело через http put. Я хочу передать проанализированную json-строку функции для дальнейшей обработки.

Есть ли какой-нибудь пример, как это сделать? Я не нашел ни одного примера, как получить доступ к телу http-запроса на размещение в виде проанализированного объекта json (spray-json)?

Спасибо.


person Marco    schedule 19.05.2015    source источник


Ответы (1)


Вот пример кода для справки.

import spray.http._
import spray.routing._

import spray.json.DefaultJsonProtocol
import spray.httpx.unmarshalling._
import spray.httpx.marshalling._

case class Person(fname: String, lname: String, age: Int)

object MyJsonProtocol extends DefaultJsonProtocol {
  implicit val PersonFormat = jsonFormat3(Person)
}

class TestActor extends HttpServiceActor {
  import MyJsonProtocol._
  import spray.httpx.SprayJsonSupport._

  override def receive: Receive = runRoute(serviceRoute)

  private val serviceRoute = path("test_end_point") {
    put {
      entity(as[Person]) { person =>
        println(person)
        complete(StatusCodes.OK)
      }
    }
  }

}

Я проверил это, используя следующую команду

curl -X PUT  -H "Content-Type: application/json" --data '{ "fname": "Vishal", "lname" :"John", "age" : 32 }' localhost:9000/test_end_point
person Vishal John    schedule 20.05.2015
comment
Спасибо, Джон. Я пропустил директиву сущности, так как искал тело. - person Marco; 20.05.2015