Scala Http 404在使用json正文调用PUT on Lift时
我试图使用Lift做一个Rest服务,当我试图通过一个json主体时,我遇到了问题 型号:Scala Http 404在使用json正文调用PUT on Lift时,scala,rest,lift,Scala,Rest,Lift,我试图使用Lift做一个Rest服务,当我试图通过一个json主体时,我遇到了问题 型号: case class TestData(substore:String) {} object TestData { private implicit val formats = net.liftweb.json.DefaultFormats implicit def toJson(item: TestData): JValue = Extraction.decompose(item)
case class TestData(substore:String) {}
object TestData {
private implicit val formats = net.liftweb.json.DefaultFormats
implicit def toJson(item: TestData): JValue = Extraction.decompose(item)
def apply(in: JValue): Box[TestData] = Helpers.tryo{in.extract[TestData]}
def unapply(in: Any): Option[TestData] = in match {
case i: TestData => Some(TestData(i.substore)
case _ => None
}
}
其余:
简单的put测试工作:
curl -i -H "Content-Type: application/json" -X PUT http://localhost:8080/api/test2
但我无法在json主体正常工作的情况下进行测试:
curl -i -H "Content-Type: application/json" -X PUT -d '{"substore":"abs"}' http://localhost:8080/api/test
在这种情况下,我总是收到:
<html> <body>The Requested URL /api/test was not found on this server</body> </html>
在此服务器上找不到请求的URL/api/测试
似乎是一个模式匹配问题
将TestData(TestData)
替换为JObject(JField(“substore”,JString(substore)))
会解决您的问题吗?您将在具有此类模式匹配的范围内拥有子存储:String
另外,在
TestData
对象中,为什么使用Any
而不是JValue
?它将在哪里应用调用的方法,我看不到任何用法(TestData
不是用JValue
在任何地方调用的)。似乎是一个模式匹配问题
将TestData(TestData)
替换为JObject(JField(“substore”,JString(substore)))
会解决您的问题吗?您将在具有此类模式匹配的范围内拥有子存储:String
另外,在
TestData
对象中,为什么使用Any
而不是JValue
?在哪里调用apply
方法,我看不到任何用法(TestData
不是在任何地方用JValue
调用的)。我试图做与这里相同的事情:,我希望有一个TestData实例,而不是使用JObject(JField(“substore”,JString(substore)))
此页上的类似项已完成。谢谢好的,明白了。尝试从这里复制unapply
方法作为开始?:(如您所见,这里有两种方法unapply
)。谢谢!我未应用def(in:JValue):选项[BCashData]=apply(in)
,现在一切正常!我试图做与这里相同的事情:,我希望有一个TestData实例,而不是使用JObject(JField(“substore”,JString(substore)))
就像在这个页面上对项目所做的一样。谢谢好的,明白了。尝试从这里复制unapply
方法作为开始?:(如您所见,这里有两种方法unapply
)。谢谢!我未应用def(in:JValue):选项[BCashData]=apply(in)
,现在一切正常!
<html> <body>The Requested URL /api/test was not found on this server</body> </html>