getRawData如何使用?

在Controller中使用getRawData接收

public void saveVideo() {

String jsonStr = getRawData();

String a = getPara("a");

renderJson(new ApiResult.Builder().setData("cccc").build());

}

报错。这个使用场景是在什么情况下。我看介绍是说返回请求post的body,这有什么用处呢?


评论区

JFinal

2018-10-14 14:48

当客户端通过一些第三方 http 工具发送数据,并将数据放在 body 中时可以使用 getRaData()

例如,客户端通过 OkHttp 或者 Http client 这类第三方发送 json 或者 XML 时就可以:
String jsonStr = getRawData();
User user = FastJson.getJson().parse(jsonStr, User.class);
Ret ret = userService.justDoIt(user);
renderJson(ret);

如果客户端的数据是通过普通的 html form 表单提交,或者通过 javascript 表单提交或者 ajax 发来的请求,就不能使用 getRawData()

JFinal

2018-10-14 14:51

开发微信公众号项目就是一个典型的应用场景,因为微信服务端发来的 json 与 XML 是通过 getRawData() 获取的

简单记一下: 原先在 jfinal 项目通过 HttpKit.readData(getRequest()) 方式获取的数据现在全都可以改成通过 getRawData() 来获取,比以前方法简单,而且可以反复多次调用 getRawData() 不会出错, 原先的 HttpKit.readData(getRequest()) 在同一次请求时只能调用一次

maxwade

2018-10-14 21:15

@JFinal 这个比之前更省代码了,一般readData一次就可以,后面setAttr()就行,多次获取,然后解析json,浪费性能,而且代码重复了

JFinal

2018-10-14 21:18

@maxwade getRawData() 多次获取数据是不浪费性能的,因为第一次获取时就将值存放到 Controller.rawData 属性中了

多次解析 json 是浪费性能了

一只敲代码的猫

2021-01-27 20:31

@JFinal getRawData这个是版本几才有的,公司现在还在用jfinal2.2

JFinal

2021-01-27 20:47

@一只敲代码的猫 老版本可以照抄 getRawData() 里头的源码,也就两行代码

杜福忠

2021-01-28 09:47

热门反馈

扫码入社