Scala Http 404在使用json正文调用PUT on Lift时

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)

我试图使用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)

  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>