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

黑马山东seo百度推广

黑马,山东seo百度推广,扁平化网站特效,自己做的网站打不开怎么搞目录 前言 OJ项目中是如何处理的 1、准备一个类,作为统一的数据返回格式 2、准备一个类,实现ResponseBodyAdvice接口 3、我们如何写返回值更好 4、进一步优化返回值 小结 前言 关于SpringBoot的同一功能处理,本博主在这篇博客已经有介…

目录

 前言

OJ项目中是如何处理的

1、准备一个类,作为统一的数据返回格式 

2、准备一个类,实现ResponseBodyAdvice接口

3、我们如何写返回值更好

4、进一步优化返回值

小结


 前言

关于SpringBoot的同一功能处理,本博主在这篇博客已经有介绍过:http://t.csdnimg.cn/pTyFL

不去看也没关系,本篇博客手把手教会你 ~


OJ项目中是如何处理的

1、准备一个类,作为统一的数据返回格式 

        首先,我们准备一个类,这个类就作为所有的返回值,这个类中,设置三个字段:状态码 + 数据 + 错误信息 

代码示例:

package com.example.demo.common;import lombok.Data;/*** Created with IntelliJ IDEA.* Description:* User:龙宝* Date:2023-10-08* Time:14:50* 统一返回*/
@Data
public class AjaxResult {private Integer code;//状态码private String msg;//状态码描述private Object data;//返回数据/*操作成功返回结果*/public static AjaxResult success(Object data) {AjaxResult ajaxResult = new AjaxResult();ajaxResult.setCode(200);ajaxResult.setMsg("");ajaxResult.setData(data);return ajaxResult;}public static AjaxResult success(Integer code,Object data) {AjaxResult ajaxResult = new AjaxResult();ajaxResult.setCode(code);ajaxResult.setMsg("");ajaxResult.setData(data);return ajaxResult;}public static AjaxResult success(Integer code,String msg,Object data) {AjaxResult ajaxResult = new AjaxResult();ajaxResult.setCode(code);ajaxResult.setMsg(msg);ajaxResult.setData(data);return ajaxResult;}/*错误返回结果*/public static AjaxResult fail(Integer code,String msg) {AjaxResult ajaxResult = new AjaxResult();ajaxResult.setCode(code);ajaxResult.setMsg(msg);ajaxResult.setData("");return ajaxResult;}public static AjaxResult fail(String msg) {AjaxResult ajaxResult = new AjaxResult();ajaxResult.setCode(-1);ajaxResult.setMsg(msg);ajaxResult.setData("");return ajaxResult;}}

        上述代码中,我们可以看到,我们还提供了几个静态方法,分为两大类:success 和fail 即后端能够正确处理业务的返回,和后端判断参数有误等其他的业务返回。例如,用户登录:用户密码输入错误为有误返回 ; 正常登录上系统 为 正确返回~

        这样一来,前端只需要接收到一个AjaxResult这样的对象,检查他的状态码code的值,就可以这个返回的是否是正确的值,正确的按AjaxResult的数据data来处理,错误的按msg的值给出对应提示~

2、准备一个类,实现ResponseBodyAdvice接口

准备一个类,并添加@ControllerAdvice注解

例:

@ControllerAdvice
public class ResponseAdvice{}

实现ResponseBodyAdvice接口,重写supports和beforeBodyWrite(统一对象就是此方法中实现)

例:

@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {@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) {return body;}
}

说明:

  • 第一个方法:supports方法中,要把返回值改为true。意思就是开启统一数据格式返回的功能。
  • 第二个方法:开启第一个方法后,返回前,就会执行方法二beforeBodyWrite这个方法,这里解释一下body:这个body就是传给这个方法的返回值,例如我执行登录功能,登录成功,返回给前端,四个大字:return "登录成功~",  返回的这个字符串,就会被传为上述第二个方法作为body的值,我们可以经过一些处理后再返回给前端。例:
@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {@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) {return AjaxResult.success(body);}
}

        这样的写法其实并不好,因为我们好像就只是默认返回的值都是AjaxResult的success方法,不能灵活调整~ 使用下面的方式会更好

3、我们如何写返回值更好

        例如上述举例中,登陆成功后,返回给前端四个字 return "登陆成功~";  

        我们大可以写成这样:

        这种实现,我们不管是返回正确的值还是非正确的值,都是可以的,无非就是调用success还是fail方法~ 

        然后在上述实现ResponseBodyAdvice的接口中的第二个方法,返回值就直接设置为 :

4、进一步优化返回值

        如果说,在上述实现ResponseBodyAdvice的接口中的第二个方法中,我们直接返回body,会出现两个有误的情况:

情况一:如果开发人员的返回值,忘记调用AjaxResult的方法了,前端解析数据时,会出现异常

因此,我们要有一个判断,代码,例:

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

情况二:如果body是字符串,会出现报错

        为什么呢?String是一个很特殊的类型,既不是基本类型,也不属于对象,并且在重写方法时,除String以外都是使用同一个格式化工具,而String用的是自己的一套格式化工具,因此在转换成HashMap时,还没有被加载好,而其他的转换器都已经加载好了,就会出现异常了。 

        因此当返回类型为String类型时,就要进行特殊处理,使用JSON的writeValueAsString方法将java对象转换成JSON格式再返回~

代码修改如下:

代码:

package com.example.demo.config;import com.example.demo.common.AjaxResult;
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.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;/*** Created with IntelliJ IDEA.* Description:* User:龙宝* Date:2023-10-08* Time:15:11*/
@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 AjaxResult) {return body;}if(body instanceof String) {return objectMapper.writeValueAsString(body);}return AjaxResult.success(body);}
}

        


小结

        总的来说就是两个步骤:创建一个AjaxResult类,然后来一个实现ResponseBodyAdvice接口的类,就可以了~ 

        好啦,上述就是我在OJ项目中对返回值的统一处理。希望对你有所帮助~ 

http://www.tj-hxxt.cn/news/87244.html

相关文章:

  • WordPress手机插件耗费CPU南昌seo外包公司
  • 人民日报网站谁做的互联网销售包括哪些
  • 做网站制作需要多少钱zac seo博客
  • 最新域名解析网站uc浏览器网页版入口
  • 个人现在可以做哪些网站产品网络推广怎样做
  • 网站下载免费新版网络营销论坛
  • 网站建设专家重庆搜索引擎seo
  • 公司做阿里巴巴网站要多少钱新闻近期大事件
  • 商务局网站溪江农贸市场建设如何发布自己的广告
  • 湖北做网站系统哪家好陕西优化疫情防控措施
  • 网站备案网站名称国内最好的危机公关公司
  • 网站网站建设哪家便宜网络营销服务的特点有哪些
  • 食品销售公司网站制作廊坊首页霸屏排名优化
  • 武汉网站优化seo微信上如何投放广告
  • 汕头独立站建站行业网站
  • www 上海网站建设推广软件排行榜前十名
  • 文山市住房和城乡建设局网站免费下载百度app最新版本
  • 外汇跟单网站建设简述网站建设的流程
  • 网站的产品图片怎样做清晰seo属于什么职业部门
  • wordpress复制数据库结构seo网站优化服务
  • 做胎压的网站怎么优化自己网站的关键词
  • 微信对接网站企业建站模板
  • 济南有哪些网站是做家具团购的产品推广的渠道
  • 价目表app制作电商沙盘seo裤子关键词
  • 公司网页制作网站公司网站建设方案
  • 建设投资平台网站百度一下你就知道了官网
  • 网站如何做中英文双语言版本沧州网站建设
  • 广州网站改版 网站建设百度推广登陆
  • 为企业建网站过时了购物网站网页设计
  • 温州建设集团官方网站电商关键词一般用哪些工具