使用 Command 对象
在 action 参数中使用 command 对象,grails 会自动将 request 中的 json 串绑定到 command 对象的属性上。
在此之后,不能再调用 request.JSON 来读取 request body 内容了,否则报错。
需要注意的是,出现下面情况,grails 将不会解析请求 body 中的 json 串:
- The request method is GET
- The request method is DELETE
- The content length is 0
Controller 自己解析 request body
方法一,使用 request.JSON 来读取 body 并解析为 json 对象。
def json = request.JSON
String phone = request.JSON["phone"]
方法二,使用输入流
String bodyText = request.inputStream.text
String bodyText = request.inputStream.getText("UTF-8")
注意:Command 方法和 request 方法是互斥的,只能使用一种。
参考
参考 Grails Doc - theWebLayer 中的Binding The Request Body To Command Objects。