当前位置: 首页 > news >正文

八宝山做网站的公司手机最新发布

八宝山做网站的公司,手机最新发布,做ppt用什么软件最好,wix网站做seo如何为什么会有统⼀数据返回? 其实统一数据返回是运用了AOP(对某一类事情的集中处理)的思维。 优点: 1.⽅便前端程序员更好的接收和解析后端数据接⼝返回的数据。 2.降低前端程序员和后端程序员的沟通成本,因为所有接⼝都…

为什么会有统⼀数据返回?

其实统一数据返回是运用了AOP(对某一类事情的集中处理)的思维。

优点:

1.⽅便前端程序员更好的接收和解析后端数据接⼝返回的数据。

2.降低前端程序员和后端程序员的沟通成本,因为所有接⼝都是固定的返回格式。

3.有利于项⽬统⼀数据的维护和修改。

4.有利于后端技术部⻔的统⼀规范的标准制定。

代码实现 

假如我们要统一返回Result 对象

import lombok.Data;@Data
public class Result<T> {private String s = "我是Result的s属性";private Integer num = 2008;private T data;public static <T> Result success(T data) {Result result = new Result<>();result.setData(data);return result;}
}

使用TextController进行测试

import com.wh.advice.model.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;@RestController
public class TextController {@RequestMapping("/text1")public Integer text1() {return 100;}@RequestMapping(value = "/text2", produces = "application/json")public String text2() {return "text";}@RequestMapping("/text3")public Result<List<Integer>> text3() {List<Integer> list = new ArrayList();list.add(1);list.add(2);list.add(3);return Result.success(list);}
}

注意:

produces = "application/json"->表示将生产json格式的数据 

 统⼀的数据返回格式的实现

  1. 添加类注解@ControllerAdvice,实现接口ResponseBodyAdvice
  2. 重写responseAdvice方法
  3. 重写beforeBodyWriter方法

代码: 

import com.wh.advice.model.Result;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {@Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {return Result.success(body);}
}
1.supports⽅法: 判断是否要执⾏beforeBodyWrite⽅法. true为执⾏, false不执⾏. 通过该⽅法可以
选择哪些类或哪些⽅法的response要进⾏处理, 其他的不进⾏处理.

2.beforeBodyWrite⽅法: 对response⽅法进⾏具体操作处理

1.测试http://127.0.0.1:8080/text1

 添加统⼀数据返回格式之前:

添加统⼀数据返回格式之后:

 2.我们继续测http://127.0.0.1:8080/text2

结果显⽰, 发⽣内部错误
查看⽇志, ⽇志报错

 多测试⼏种不同的返回结果, 发现只有返回结果为String类型时才有这种错误发⽣

解决问题:

我们要注入ObjectMapper

@Autowired
private ObjectMapper objectMapper;

对 beforeBodyWrite⽅法进行修改: 

 @SneakyThrows@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {if (body instanceof String) {return objectMapper.writeValueAsString(Result.success(body));}return Result.success(body);}

 3.如果⼀些⽅法返回的结果已经是Result类型了, 那就直接返回Result类型的结果即可

完整代码:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.wh.advice.model.Result;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {@Autowiredprivate ObjectMapper objectMapper;@Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}@SneakyThrows@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {if (body instanceof Result) {return body;}if (body instanceof String) {return objectMapper.writeValueAsString(Result.success(body));}return Result.success(body);}
}

以上为我个人的小分享,如有问题,欢迎讨论!!! 

都看到这了,不如关注一下,给个免费的赞 

http://www.yayakq.cn/news/210455/

相关文章:

  • 大型企业网站欣赏银川公司做网站
  • 建网站价格 优帮云怎么做dj网站
  • 网站估值怎么做济南微网站开发
  • 网站优化检测如何搭建平台运营体系
  • 网站封面制作美橙极速建站系统
  • 网站开发质保金山东城市建设职业学院教务网网站
  • 惠州企业建站模板买外链有用吗
  • 网站去掉后缀html深圳外贸网站外贸网站建设
  • 常州网站建设怎么样网络推广培训资料
  • 做设计的分析图网站有哪些京紫元年深圳网站建设
  • 宁德商城网站开发设计网站 linux 服务器配置
  • pc网站做成移动网站最好的书籍设计网站
  • 江西建设职业技术学院网站专业的深圳电商app开发
  • 最好的网站建设报价代驾小程序源码
  • 昆明网站建设优化技术公司网站建设须知
  • 建立大型网站国家高新技术企业公示名单
  • 网站建设 金疙瘩计划wordpress阿里云短信
  • 租用海外服务器的网站有域名吗网站开发系统的可行性研究报告
  • 企业品牌网站建设方案沈阳核工业建设工程总公司网站
  • 怎么做免费的产品图片网站手机版oa系统下载
  • 银川建设厅网站优酷网站怎么做的
  • 建设微网站平台无锡捷搜网站建设
  • 体彩网站建设简单的英文网站模板
  • 网站建设进度规划wordpress收费下载资源
  • 网站推广策划书包括哪些点南阳企业网站制作
  • 上海市住房与城乡建设部网站西楚房产网宿迁房产网
  • 2016手机网站制作规范中文域名是网站名称吗
  • 大安移动网站建设网站建设经典文章
  • 赣州专业企业网站建设成都建模培训
  • 丹灶网站设计学网站开发跟那个专业最相近