Search code examples
scalarestlift

Scala Lift Rest API responses HTML


I'm currently working on a Rest Api using Lift as Framework. Most of the requests are using Json as return type which works fine:

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)
    }
  })

Now i want to add a function which returns plain html which is stored in a mysql db. So basicly i want to return a String back to the Resthelper. I tried something like this but it didn't compile:

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

Maybe I'm stupid but i couldn't find anything in the Lift "Cookbook"

Update:

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

I tried this to fool lift by selling html as XML. It compiled but didn't work at the end. Obviously it's not possible to respond a normal String back from a RestHelper.

Thanks for your help


Solution

  • You have to give back Box[LiftResponse].

    So In that case It'd be Full(PlainTextResponse(Item.getDescription(itemnum)).

    I would also add implicit conversion from LiftResponse -> Box[LiftResponse]