HTTP-request的主体作为spray-json对象

时间:2015-05-19 16:06:27

标签: spray spray-json

我想用喷雾创造一个简单的休息服务。其余服务应通过http put接收json-body。我想将解析后的json-string传递给函数进行进一步处理。

那里有什么例子怎么做?我还没有找到任何示例如何访问http put请求的主体作为解析的json对象(spray-json)?

感谢。

1 个答案:

答案 0 :(得分:3)

以下是供您参考的示例代码。

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