1

我目前正在使用 Lift 作为框架来开发 Rest Api。大多数请求都使用 Json 作为返回类型,效果很好:

serve ("api" / "item" prefix {
    case _ :: Nil JsonGet _ => {
      if (checkKey(S.params("api_key").mkString)) Item.newItem(S.params("item_id").mkString, S.params("api_key").mkString)
    }
  })

现在我想添加一个函数,它返回存储在 mysql db 中的纯 html。所以基本上我想将一个字符串返回给 Resthelper。我试过这样的东西,但它没有编译:

serve {
    case "itemDesc" :: itemnum :: _ => {
      Item.getDescription(itemnum)
    }
  }

也许我很愚蠢,但我在电梯“食谱”中找不到任何东西

更新:

serve { 
    case "itemDesc" :: AsInt(itemnum) :: _ XmlGet _ => { 
      Item.getDescription(itemnum) 
    } 
  }

我试图通过将 html 作为 XML 出售来愚弄电梯。它编译但最后没有工作。显然不可能从 RestHelper 回复正常的字符串。

谢谢你的帮助

4

2 回答 2

1

你必须回馈Box[LiftResponse]

所以在那种情况下它会是Full(PlainTextResponse(Item.getDescription(itemnum))

我还将添加隐式转换LiftResponse -> Box[LiftResponse]

于 2012-10-01T19:35:08.067 回答
0
serve {
    case "itemDesc" :: AsInt(itemnum) :: _ XmlGet _ => {
      Full(PlainTextResponse(Item.getDescription(itemnum), ("Content-Type" -> "text/html") :: Nil, 200))
    }
  }

是正确答案。我必须将内容类型添加到 PlainTextResponse 才能解析 HTML。有了这个片段,我可以让我的 rest api 像魅力一样工作,并添加一个函数,将内容类型为 html 的纯文本返回给浏览器。

于 2012-10-04T15:08:12.767 回答