精通 Grails: RESTful Grails
2009-10-26 00:00:00 来源:WEB开发网注意请求中的 Accept 报头。客户机要是提交 */* 的话,就意味着:“返回什么样的格式都无所谓。我将接受任何内容。”
cURL 允许您使用这个值来覆盖 --header 参数。输入 curl --request HEAD --verbose --header Accept:text/xml http://localhost:9090/trip/airport/list,并验证 Accept 报头正在请求 text/xml。这就是资源的 MIME 类型了。
那么,Grails 是如何响应服务器端的 Accept 报头的呢?再向 AirportController 添加一个闭包,如清单 4 所示:
清单 4. debugAccept 操作def debugAccept = {
def clientRequest = request.getHeader("accept")
def serverResponse = request.format
render "Client: ${clientRequest}\nServer: ${serverResponse}\n"
}
清单 4 中的第一行从请求中检索出了 Accept 报头。第二行展示了 Grails 如何转换请求和它将要发回的响应。
现在,使用 cURL 来做相同的搜索,如清单 5 所示:
清单 5. 调试 cURL 中的 Accept 报头$ curl http://localhost:9090/trip/airport/debugAccept
Client: */*
Server: all
$ curl --header Accept:text/xml http://localhost:9090/trip/airport/debugAccept
Client: text/xml
Server: xml
all 和 xml 值是哪来的呢?看一下 grails-app/conf/Config.groovy。在文件顶部,您应该看到了一个散列映射,它对所有的键都使用了简单名称(像 all 和 xml 这样的名称),而且所有的值都使用了与之对应的 MIME 类型。清单 6 展示了 grails.mime.types 散列映射:
- ››精通Photoshop之通道详解
- ››精通 Grails: 使用 Grails 进行单元测试(单元测试...
- ››精通 Grails: 创建自定义插件
- ››精通 Grails: 在企业中使用 Grails
- ››精通 Grails: Grails 与移动 Web
- ››精通 Grails: Grails 与遗留数据库
- ››精通 Grails: RESTful Grails
- ››精通 Grails: 用 JSON 和 Ajax 实现异步 Grails
- ››精通 Grails: 用定制 URI 和 codec 优化 Grails 中...
- ››精通 Grails: 身份验证和授权
- ››精通 Grails: 文件上传和 Atom 联合
- ››精通 Grails: 了解插件
更多精彩
赞助商链接