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 = ForEntity(url, String.class,name);
第⼀个参数是 url ,url 中有⼀个占位符 {1} ,如果有多个占位符分别⽤ {2} 、 {3} … 去表⽰,第⼆个参数是接⼝返回的数据类型(此时返回的类型为String),最后是⼀个可变长度的参数(可不写),⽤来给占位符填值。
ResponseEntity
接着我们⽤String类型的ResponseEntity类来接收,ResponseEntity标识整个http相应的状态码、头部信息以及相应体内容。因此我们可以使⽤其对http响应实现完整配置。
如果需要使⽤ResponseEntity,必须在请求点返回(既ForEntity等),通常在spring rest中实现。ResponseEntity 是通⽤类型,因此可以使⽤任意类型作为响应体。
ResponseEntity的优先级⾼于@ResponseBody。在不是ResponseEntity的情况下才去检查有没有@ResponseBody注解。如果响应类型是ResponseEntity可以不写@ResponseBody注解,写了也没有
关系。简单的说
@ResponseBody可以直接返回Json结果,
@ResponseEntity不仅可以返回json结果,还可以定义返回的HttpHeaders和HttpStatus
String regionString = Body();//获取请求体
JSONObject jsonObject = JSONObject.parseObject(regionString);//将请求体转化为json格式
JSONObject
JSONObject只是⼀种数据结构,可以理解为JSON格式的数据结构( 结构),可以使⽤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("persons");
//通过相应的get⽅法,获取相应的属性
int id = Int("id");
String name = String("name");
int age = Int("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 = JSONArray("persons");
//通过循环获取数据,并放⼊list集合中
for (int i = 0;i<array.length();i++){
int id = JSONObject(i).getInt("id");
String name = JSONObject(i).getString("name");
json转换对象int age = JSONObject(i).getInt("age");
Person person = new Person(id, name, age);
list.add(person);
}
return list;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。