您好我正在使用Lift for my api并需要一些帮助来生成jSONP响应。我有一个JSON响应的工作版本,需要添加它,以便我可以使用我的api进行跨域调用。以下是我的api的代码片段:
/ 请求 /
case "api" :: "events" :: "person" :: _ Get req => JsonResponse(json_person(personEvents(req, req.request.queryString.mkString("")),person_details(req)))
/ 响应 /
def json_person(in : List[Events], person1 : List[Person]) : JValue = {
("person" ->
person1.map(people =>
("name" -> people.main_person_name.is) ~
("alternate_name" -> people.aka.is)
))}
答案 0 :(得分:2)
我过去这样做的方法是检查URL中是否提供了“回调”查询参数,如果是,请使用提供的函数名来执行回调。如果未提供,请发回对象本身。
case "api" :: "events" :: "person" :: _ Get req => {
val jsonObj = json_person(...)
S.param("callback") match {
case Full(callbackName) => JSFunc(callbackName, jsonObj).cmd
case _ => JsonResponse(jsonObj)
}
}