RestTemplate,ResponseEntity,JSONObject(与前端交互的理解)

RestTemplate

RestTemplate 是一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。

GET 请求

可以调用getForEntity和getForObject

POST 请求

可以调用postForEntity和postForObject

那么Entity类和Object有什么区别呢(以get请求进行比较)?

getForObject 的返回值就是服务提供者返回的数据,使用 getForObject 无法获取到响应数据的响应头。

RestTemplate 发送的是 HTTP 请求,那么在响应的数据中必然也有响应头,如果开发者需要获取响应头的话,那么就需要使用 getForEntity 来发送 HTTP 请求,此时返回的对象是一个 ResponseEntity 的实例。这个实例中包含了响应数据以及响应头。

ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class,name);

 第一个参数是 url ,url 中有一个占位符 {1} ,如果有多个占位符分别用 {2} 、 {3} … 去表示,第二个参数是接口返回的数据类型(此时返回的类型为String),最后是一个可变长度的参数(可不写),用来给占位符填值。

ResponseEntity

接着我们用String类型的ResponseEntity类来接收,ResponseEntity标识整个http相应的状态码、头部信息以及相应体内容。因此我们可以使用其对http响应实现完整配置。

如果需要使用ResponseEntity,必须在请求点返回(既restTemplate.getForEntity等),通常在spring rest中实现。ResponseEntity是通用类型,因此可以使用任意类型作为响应体。

ResponseEntity的优先级高于@ResponseBody。在不是ResponseEntity的情况下才去检查有没有@ResponseBody注解。如果响应类型是ResponseEntity可以不写@ResponseBody注解,写了也没有关系。简单的说
@ResponseBody可以直接返回Json结果,
@ResponseEntity不仅可以返回json结果,还可以定义返回的HttpHeaders和HttpStatus
 

String regionString = forEntity.getBody();//获取请求体
JSONObject jsonObject = JSONObject.parseObject(regionString);//将请求体转化为json格式

JSONObject 

JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素,以及进行下一步操作。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。

JSONObject的一些方法

JSONObject jsonObject = JSONObject.parseObject(regionString);     //是将str转化为相应的JSONObject对象,其中str是“键值对”形式的json字符串,转化为JSONObject对象之后就可以使用其内置的方法,进行各种处理了。
//3.1 只包含一个对象的 json 字符串解析

//将得到json数据转换为一个json对象
JSONObject jsonObject = new JSONObject(data);
//获取"persons"的json对象
jsonObject = jsonObject.getJSONObject("persons");
//通过相应的get方法,获取相应的属性
int id = jsonObject.getInt("id");
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
//将获取到的数据放到一个Person对象中
Person person = new Person(id, name, age);



//3.2 含有多个对象的 json 字符串

List<Person> list = new ArrayList<>();
//将得到json数据转换为一个json对象
JSONObject jsonObject = new JSONObject(data);
//获取"persons"的json对象,并将其转换为一个json数组
JSONArray array = jsonObject.getJSONArray("persons");
//通过循环获取数据,并放入list集合中
for (int i = 0;i<array.length();i++){
    int id = array.getJSONObject(i).getInt("id");
    String name = array.getJSONObject(i).getString("name");
    int age = array.getJSONObject(i).getInt("age");
    Person person = new Person(id, name, age);
    list.add(person);
}
return list;

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值