0

我正在尝试制作一个 liftweb 休息服务器,它接受POST小型内部测试的请求并通过 Spring 框架的RestTemplate#postForObject("http://localhost:9090/api/validate/", request, String.class);. 我浏览了Simply liftweb 的第 11 章 REST

我的 RestController.scala 是

 13 object RestController extends RestHelper {
 14   val data = LiftRules.loadResourceAsXml("/ValidationReply.xml");

 21  serve {
 22    case "api" :: "validate" :: _ XmlPost xml -> _ => <system>
 26             <id>TEST</id>
 27             <name>PILOT</name>
 28             <version>1</version>
 29             <ip_address>192.168.2.18</ip_address>
 30             <connector>
 31                 <id>UPD</id>
 32             </connector>
 33         </system>

124    case JsonGet("api" :: "validate" :: _, _) => JString("Validated")
125  }
126 }

当我使用 请求服务器时postUrl = "http://localhost:9090/api/validate",我收到未找到的错误响应

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <body>The Requested URL /api/validate was not found on this server</body>
</html>  

什么时候restUrl = "http://localhost:9090/api/validate",我得到第二个 api 调用并回复"Validated"。如何POST在 Liftweb 中提出请求?

4

1 回答 1

1

您所拥有的是寻找POSTXML。根据消息来源

它通过定义 TestPost 提取器的特征传递。请求是 POST,在帖子正文中有 JSON 或 XML 数据,响应中需要 JSON 或 XML。

我不确定您是只是提出请求还是实际上是在发送数据。但是,假设您只是发出一个发布请求,我会尝试在正文中发布 XML。Post否则,您可以尝试使用而不是像这样重写规则XmlPost

case Post("api" :: "validate" :: Nil, req) => 
          <system>
              <id>TEST</id>
              <name>PILOT</name>
              <version>1</version>
              <ip_address>192.168.2.18</ip_address>
              <connector>
                  <id>UPD</id>
              </connector>
          </system>
于 2013-09-08T21:06:55.960 回答