class BookController {
def list() {
log.info "User agent: " + request.getHeader("User-Agent")
render(view: actionName)
}
}
请求
目的
request
对象是 Servlet API 中 HttpServletRequest 接口的一个实例
示例
描述
HttpServletRequest 类可用于(除其他事项之外)获取请求标头、存储请求作用域属性以及建立有关客户端的信息。请参阅 Servlet API 的 javadoc 以获取更多信息。
Grails 通过添加以下新属性和方法来增强 HttpServletRequest
实例
-
XML
- `XmlSlurper’s GPathResult 类的实例,允许解析传入的 XML 请求(适用于 REST)。 -
JSON
- Grails 中 JSONObject 类的实例,允许解析传入的 JSON 请求(适用于基于 JSON 的 REST)。 -
forwardURI
- 用于获取当前请求 URI,因为request
对象的requestURI
属性返回原始 URI,而不是匹配的 URI。 -
isRedirected()
- 如果已对此请求发出重定向,则返回true
(Grails 2+)。 -
get
- 如果当前请求是 HTTPGET
请求,则返回 true。 -
post
- 如果当前请求是 HTTPPOST
请求,则返回 true。 -
each
- Groovy 的each
方法的实现,用于迭代请求属性。 -
find
- Groovy 的默认find
方法的实现,用于搜索请求属性。 -
findAll
- Groovy 的默认findAll
方法的实现,用于搜索请求属性。 -
format
- 请求格式,用于 内容协商。 -
withFormat(Closure)
- withFormat 方法用于 内容协商。 -
xhr
- 如果当前请求是 Ajax 请求,则返回true
。
XML
和 JSON
属性对于 XML API 非常有用,可用于解析传入的 XML 或 JSON 数据包。例如,给定请求正文
<book>
<title>The Stand</title>
</book>
这很容易解析
def title = request.XML?.title
render "The Title is $title"
通常可以通过 getAttribute 从 ServletRequest 访问的请求属性还可以通过数组索引运算符或取消引用运算符索引查找
def user = request['user']
request['user'] = 'John'
assert 'John' == request.user