id | title | sidebar_label |
---|---|---|
receive_data | 接收数据 | 接收数据 |
Forest请求会自动将响应的返回数据反序列化成您要的数据类型。想要接受指定类型的数据需要完成两步操作:
第一步:定义dataType
属性
dataType
属性指定了该请求响应返回的数据类型,目前可选的数据类型有三种: text
, json
, xml
Forest会根据您指定的dataType
属性选择不同的反序列化方式。其中dataType
的默认值为text
,如果您不指定其他数据类型,那么Forest就不会做任何形式的序列化,并以文本字符串的形式返回给你数据。
/**
* dataType为text或不填时,请求响应的数据将以文本字符串的形式返回回来
*/
@Request(
url = "http://localhost:8080/text/data",
dataType = "text"
)
String getData();
若您指定为json
或xml
,那就告诉了Forest该请求的响应数据类型为JSON或XML形式的数据,就会以相应的形式进行反序列化。
/**
* dataType为json或xml时,Forest会进行相应的反序列化
*/
@Request(
url = "http://localhost:8080/text/data",
dataType = "json"
)
Map getData();
第二步:指定反序列化的目标类型
反序列化需要一个目标类型,而该类型其实就是方法的返回值类型,如返回值为String
就会反序列成String
字符串,返回值为Map
就会反序列化成一个HashMap对象,您也可以指定为自定义的Class类型。
public class User {
private String username;
private String score;
// Setter和Getter ...
}
如有上面这样的User类,并把它指定为方法的返回类型,而且相应返回的数据这样一段JSON:
{"username": "Foo", "score": "82"}
那请求接口就应该定义成这样:
/**
* dataType属性指明了返回的数据类型为JSON
*/
@Get(
url = "http://localhost:8080/user?id=${0}",
dataType = "json"
)
User getUser(Integer id)
从1.4.0
版本开始,dataType
属性默认为 auto
(自动判断数据类型), 也就是说 dataType
属性可以完全省略不填,Forest会自行判断返回的数据类型是哪种格式。
/**
* 省略dataType属性会自动判断返回的数据格式并进行反序列化
*/
@Get(url = "http://localhost:8080/user?id=${0}")
User getUser(Integer id)