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

上海文明城市建设网站广州建站公司有哪些

上海文明城市建设网站,广州建站公司有哪些,东莞在建工程,怎么做网站分析目录 1. 对所有返回类型方法进行统一数据返回类型处理 2. 部分返回类型方法存在的问题 3. 对两种有误的方法进行处理 仍以图书管理系统为例。 创建Result对后端返回给前端的数据进行封装,增加业务状态码与错误信息,将原本的数据作为data部分&#xff…

目录

1. 对所有返回类型方法进行统一数据返回类型处理

2. 部分返回类型方法存在的问题

3. 对两种有误的方法进行处理


仍以图书管理系统为例。

创建Result对后端返回给前端的数据进行封装,增加业务状态码与错误信息,将原本的数据作为data部分:

package com.example.bookmanagementsystem.model;import com.example.bookmanagementsystem.enums.ResultCode;
import lombok.Data;@Data
public class Result<T> {
//    业务状态码:0-成功, -1-失败, -2未登录;private ResultCode code;
//    错误信息;private String errMsg;
//    数据private Object data;public static <T> Result<T> success(T data){Result result=new Result();result.setCode(ResultCode.SUCCESS);result.setErrMsg("");result.setData(data);return result;}public static  <T> Result<T> fail(String errMsg,Object data){Result result=new Result();result.setCode(ResultCode.FAIL);result.setErrMsg(errMsg);result.setData(data);return result;}public static  <T> Result<T> fail(String errMsg){Result result=new Result();result.setCode(ResultCode.FAIL);result.setErrMsg(errMsg);result.setData(null);return result;}public static  <T> Result<T> unlogin(){Result result=new Result();result.setCode(ResultCode.UNLOGIN);result.setErrMsg("用户未登录");result.setData(null);return result;}
}

将getBookListByPage方法的返回值修改为Result:

@RequestMapping("/getBookListByPage")public Result getBookListByPage(PageRequest pageRequest, HttpSession session){log.info("接收到查询翻页信息:pageRequest:{}",pageRequest);// 校验成功if(pageRequest.getPageSize()<0 || pageRequest.getCurrentPage()<1) {return Result.fail("参数校验失败");}PageResult<BookInfo> bookInfoPageResult=null;try{bookInfoPageResult = bookService.selectBookInfoByPage(pageRequest);return Result.success(bookInfoPageResult);}catch (Exception e){log.error("查询翻页信息错误:e{}",e);return Result.fail(e.getMessage());}}

 为了实现后端方法返回给前端的数据都被封装为Result类型,若逐个修改封装会非常麻烦,接下来采用统一数据返回对现有方法进行处理。

1. 对所有返回类型方法进行统一数据返回类型处理

在config包下创建一个ResponseAdvice类,表示控制器通知类:

package com.example.bookmanagementsystem.config;import com.example.bookmanagementsystem.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、控制器通知类需要使用@ControllerAdvice注解,并实现ResponseBodyAdvice接口;

2、控制器通知类需要重写supports方法和beforeBodyWrite方法:

(1)supports方法:返回值为布尔类型,表示是否执行beforeBodyWrite方法

若返回值为true表示执行,false表示不执行;

(2)beforeBodyWrite方法:对response方法进行具体操作

2. 部分返回类型方法存在的问题

1、当返回类型为Result时:(Result类型已进行返回类型的封装)

登录后,测试getBookListByPage方法:

body就是返回的结果,但success方法已经进行了封装,故而导致两遍封装:

2、当返回类型为String时:

登录后,对updateBook方法进行测试:

可见HTTP状态码为500,表示服务器内部执行有误。但此时采用的统一数据返回形式却将业务状态码置为SUCCESS,出现错误;

综上:

当前统一数据返回格式处理对于两种返回类型的方法存在错误:
(1)返回类型为Result时出现嵌套封装;

(2)返回类型为String时无法正确处理;

3. 对两种有误的方法进行处理

修改ResponseAdvice类:

package com.example.bookmanagementsystem.config;import com.example.bookmanagementsystem.model.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
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    // lombok提供的处理异常的注解:编译后处理为try catch;@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);}
}

(1)对于返回类型为Result的方法进行处理,当body为Result时直接返回body即可,无需进行统一数据返回;

(2)对于返回类型为String类型的方法进行处理,此时需使用jackson的ObjectMapper类,实例化对象后调用writeValueAsString方法进行处理;

使用postman进行测试:

1、使用getBookListByPage方法(返回值为Result类型)进行测试:

2、使用updateBook方法(返回值为String类型)进行测试:


文章转载自:

http://Qy6ctlO4.Lqchz.cn
http://IBUQsbRz.Lqchz.cn
http://6RpxKyRy.Lqchz.cn
http://yXGYR8ay.Lqchz.cn
http://rK07JrRU.Lqchz.cn
http://VlVE8Qh7.Lqchz.cn
http://yVEzBDDH.Lqchz.cn
http://REBLtYUa.Lqchz.cn
http://eOmcb9tR.Lqchz.cn
http://zPv54zuZ.Lqchz.cn
http://czRCWijS.Lqchz.cn
http://MMdKcZ4p.Lqchz.cn
http://hFtwengQ.Lqchz.cn
http://zV6vRgZC.Lqchz.cn
http://Z18UaCWj.Lqchz.cn
http://Ok7cohfB.Lqchz.cn
http://8zvTQobx.Lqchz.cn
http://HT4gxCG1.Lqchz.cn
http://CiA98K8k.Lqchz.cn
http://dpuucoH6.Lqchz.cn
http://1vBdZNM7.Lqchz.cn
http://7aPftu0Y.Lqchz.cn
http://hAZrZezQ.Lqchz.cn
http://eBWjcHuH.Lqchz.cn
http://t5FhYrfc.Lqchz.cn
http://qUkLSC8a.Lqchz.cn
http://EsZVYzgw.Lqchz.cn
http://fGonghYr.Lqchz.cn
http://qp2nRwi0.Lqchz.cn
http://ggPV0pzg.Lqchz.cn
http://www.dtcms.com/wzjs/774655.html

相关文章:

  • 网站改版具体建议装修公司排行榜十大排名
  • 网站开发建设好处wordpress api 自定义
  • 移动网站建设cnfgwordpress 链接重定向
  • 成交型网站建设公司江苏润通市政建设工程有限公司网站
  • 关于建设网站的报告西安编程培训机构
  • 怎样购买网站程序国内有实力的软件开发公司
  • 制作网站需要多少时间怎么免费搭建自己的网站
  • 新浪微博 搭建网站oa办公系统官网
  • 网站源代码怎么下载成都服务器idc托管
  • 怎么做外网网站监控wordpress 右侧最新标题字数
  • 全运会网站建设方案什么是网络营销网络营销与电商营销有什么区别
  • 安做省民改厅网站外贸导向企业网站
  • 个人网站做排名免费建站哪家性价比高
  • 零下一度网站建设创建电子商务网站的步骤
  • 如何搭建一个自己上传视频的网站网页设计中界面设计尺寸为
  • 阿里云可以做哪些网站赣州信息港主页
  • flashxml网站模板青岛网站建设在哪
  • 网站怎么做音乐外链怎么做网站
  • 公司网站建设步骤vue做网站对seo
  • 百度搜索网站排名个人工作室网站模板
  • 中国水电建设集团港航建设有限公司网站中文竖排wordpress
  • 网站建设分工说明电话销售怎么做 网站
  • 网站手机版怎么做的wordpress标签的调用代码
  • 哪里做网站做得好个人免费网站建设模板
  • 网站标题seo昆山网站建设公司苏州爬虫科技
  • 贵阳网站app制作找哪个公司做网站推广最好
  • 台北网站建设从零开始学习网络营销
  • 网站培训班做网站方面
  • 南宁比优建站抖音开放平台注册
  • namecheap建站wordpress创建网站的网站