Как можно просто получить доступ к атрибутам get и post в структуре лифта внутри RestHelper? В документации нет явных примеров по этому поводу: (
package my.domain
import net.liftweb.http._
import net.liftweb.http.rest._
import net.liftweb.json.JsonAST._
import net.liftweb.json._
import net.liftweb.common.{Box,Full,Empty,Failure,ParamFailure}
import net.liftweb.mapper._
import ru.dmteam.model.{RssItem}
object ContentRest extends RestHelper {
def getq: String = {
val q = S.param("q")
q.toString
}
serve {
case "api" :: "static" :: _ XmlGet _=> <b>{getq}</b>
}
}
I хотите понять, как сделать так, чтобы лифт отображал значение q
, когда я запрашиваю http: // localhost: 8080 / api / static.xml? q = test
Lift использует Box, а не null, чтобы указать, был ли передан параметр. Это позволяет хорошо использовать Scala для понимания, чтобы связать хороший обработчик запросов. Я позволю коду говорить самому за себя:
object MyRest extends RestHelper {
// serve the q parameter if it exists, otherwise
// a 404
serve {
case "api" :: "x1" :: _ Get _ =>
for {
q <- S.param("q")
} yield <x>{q}</x>
}
// serve the q parameter if it exists, otherwise
// a 404 with an error string
serve {
case "api" :: "x2" :: _ Get _ =>
for {
q <- S.param("q") ?~ "Param 'q' missing"
} yield <x>{q}</x>
}
// serve the q parameter if it exists, otherwise
// a 401 with an error string
serve {
case "api" :: "x2" :: _ Get _ =>
for {
q <- S.param("q") ?~ "Param 'q' missing" ~> 401
} yield <x>{q}</x>
}
// serve the q, r, s parameters if this exists, otherwise
// different errors
serve {
case "api" :: "x3" :: _ Get _ =>
for {
q <- S.param("q") ?~ "Param 'q' missing" ~> 401
r <- S.param("r") ?~ "No 'r'" ~> 502
s <- S.param("s") ?~ "You're s-less" ~> 404
} yield <x><q>{q}</q><r>{r}</r><s>{s}</s></x>
}
}
Я не уверен, но можете ли вы попробовать с помощью
S.param("param_name")
http://scala-tools.org/mvnsites-snapshots/liftweb/scaladocs/index.html
или с помощью класс req
case r @ JsonPost("some" :: "path" :: _, json) => _ => {
r.param("name")
}
http://scala-tools.org/mvnsites-snapshots/liftweb/scaladocs/index.html
Изменить : У меня работает этот образец:
package code.rest
import net.liftweb.http.rest._
object SampleRest extends RestHelper {
serve {
case Get("sample" :: _, req) =>
<hello>{req.param("name") getOrElse ("??") }</hello>
}
}
В сниппетах параметры Get и Post являются частью жизненного цикла сниппета. Lift присваивает GUID функции, переданной в SHtml.text (defaultValue, passFunction), и возвращает места этого GUID в атрибуте name сгенерированного элемента HTML. Когда форма отправлена, Lift ищет идентификатор GUID в таблице функций и вызывает функцию с переданным параметром.
Для более общих запросов откройте окно:
val q = S.param ("named_parameter") openOr ""
, и вы можете установить переменную сеанса для запросов с отслеживанием состояния:
объект myObject extends SessionVar [Коробка [Модель]] (Пустая)