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

网站不显示内容企业管理

网站不显示内容,企业管理,做网站客户要先看效果后付款,内部网站建设教程Controller 层优化四步曲 前言 在开发过程中,Controller 层作为系统与外界交互的桥梁,承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而,随着业务复杂度的增加,Controller 层的代码往往会变得臃肿且难以维护。 …

Controller 层优化四步曲

前言

在开发过程中,Controller 层作为系统与外界交互的桥梁,承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。

然而,随着业务复杂度的增加,Controller 层的代码往往会变得臃肿且难以维护。

为了提升代码的可读性、可维护性以及系统的健壮性,我们可以通过以下四个步骤对 Controller 层进行改造:

  1. 统一返回结构
  2. 统一包装处理
  3. 参数校验
  4. 自定义异常与统一拦截异常

1.统一返回结构

在前后端分离的架构中,统一的返回结构能够显著提升接口的可读性和可维护性。

通过定义统一的返回格式,前端开发人员可以更清晰地判断接口调用是否成功,而不需要依赖返回值的具体内容。

定义返回数据结构

首先,我们可以定义一个通用的返回结构,包含状态码、状态信息以及返回的数据。

以下是一个示例:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result<T> {private Integer code;private String message;private T data;public static <T> Result<T> success(T data) {return new Result<>(200, "操作成功", data);}public static <T> Result<T> error(String message) {return new Result<>(500, message, null);}
}

在这个结构中,code 表示状态码,message 表示状态信息,data 则是具体的返回数据。

通过这种方式,所有的接口都可以返回统一的格式,便于前端处理。

2.统一包装处理

为了进一步简化 Controller 层的代码,我们可以使用 Spring 提供的 ResponseBodyAdvice 来统一处理返回值的包装。

这样,Controller 层只需要返回业务数据,而不需要手动封装返回结构。

使用 ResponseBodyAdvice 进行统一包装

@RestControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice<Object> {@Overridepublic boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {return true;}@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,Class<? extends HttpMessageConverter<?>> selectedConverterType,ServerHttpRequest request, ServerHttpResponse response) {if (body instanceof Result) {return body;}return Result.success(body);}
}

通过这种方式,所有的 Controller 返回值都会被自动包装成 Result 对象,减少了重复代码。

3. 参数校验

参数校验是保证系统健壮性的重要手段。通过将参数校验逻辑从业务代码中剥离出来,不仅可以减少代码的耦合度,还能提升代码的可读性。

使用 @Validated 进行参数校验

Spring 提供了 @Validated 注解,可以方便地对请求参数进行校验。

我们可以在 DTO 对象中定义校验规则,并在 Controller 方法中使用 @Validated 注解进行校验。

@Data
public class UserDTO {@NotBlank(message = "用户名不能为空")private String username;@NotBlank(message = "密码不能为空")@Length(min = 6, max = 20, message = "密码长度必须在6到20之间")private String password;@Email(message = "邮箱格式不正确")private String email;
}@RestController
@RequestMapping("/user")
public class UserController {@PostMapping("/register")public Result<String> register(@RequestBody @Validated UserDTO userDTO) {// 业务逻辑return Result.success("注册成功");}
}

通过这种方式,参数校验的逻辑与业务逻辑完全解耦,代码更加清晰。

自定义异常与统一拦截异常

在实际开发中,系统可能会抛出各种异常。

为了提升系统的健壮性,我们可以自定义异常,并通过统一的异常拦截器来处理这些异常。

自定义异常

我们可以根据业务需求定义不同的异常类,例如 BusinessExceptionForbiddenException

public class BusinessException extends RuntimeException {public BusinessException(String message) {super(message);}
}public class ForbiddenException extends RuntimeException {public ForbiddenException(String message) {super(message);}
}

统一异常拦截

通过 @RestControllerAdvice@ExceptionHandler,我们可以统一处理系统中的异常,并返回统一的错误信息。

@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(BusinessException.class)public Result<String> handleBusinessException(BusinessException ex) {return Result.error(ex.getMessage());}@ExceptionHandler(ForbiddenException.class)public Result<String> handleForbiddenException(ForbiddenException ex) {return Result.error("无权访问");}@ExceptionHandler(Exception.class)public Result<String> handleException(Exception ex) {return Result.error("系统异常,请稍后重试");}
}

通过这种方式,所有的异常都会被统一处理,并返回给前端统一的错误格式。

总结

通过对 Controller 层的改造,我们可以显著提升代码的可读性、可维护性以及系统的健壮性。

统一的返回结构、自动化的参数校验、自定义异常与统一拦截异常,这些措施不仅减少了重复代码,还使得代码更加清晰和易于维护。

在实际开发中,我们可以根据具体的业务需求,进一步优化和扩展这些策略。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,各大平台同名。


文章转载自:
http://gladiolus.wqfj.cn
http://honeysuckle.wqfj.cn
http://pinspotter.wqfj.cn
http://vitta.wqfj.cn
http://reprehensive.wqfj.cn
http://disgustedly.wqfj.cn
http://eat.wqfj.cn
http://kookiness.wqfj.cn
http://junta.wqfj.cn
http://dolicapax.wqfj.cn
http://conformability.wqfj.cn
http://tromp.wqfj.cn
http://medalist.wqfj.cn
http://pupae.wqfj.cn
http://destructionist.wqfj.cn
http://fytte.wqfj.cn
http://bah.wqfj.cn
http://urinogenital.wqfj.cn
http://absquatulation.wqfj.cn
http://centrepiece.wqfj.cn
http://martyrdom.wqfj.cn
http://musically.wqfj.cn
http://overglaze.wqfj.cn
http://trirectangular.wqfj.cn
http://corruptionist.wqfj.cn
http://systematism.wqfj.cn
http://unenvious.wqfj.cn
http://hypoproteinemia.wqfj.cn
http://rhizophilous.wqfj.cn
http://coinstitutional.wqfj.cn
http://suspensible.wqfj.cn
http://alan.wqfj.cn
http://trisection.wqfj.cn
http://westabout.wqfj.cn
http://glyphography.wqfj.cn
http://brigand.wqfj.cn
http://bully.wqfj.cn
http://undistracted.wqfj.cn
http://seven.wqfj.cn
http://fra.wqfj.cn
http://felting.wqfj.cn
http://venturesomely.wqfj.cn
http://eurystomatous.wqfj.cn
http://axisymmetric.wqfj.cn
http://leaves.wqfj.cn
http://lawcourt.wqfj.cn
http://waadt.wqfj.cn
http://woof.wqfj.cn
http://indoctrinization.wqfj.cn
http://injudicial.wqfj.cn
http://salability.wqfj.cn
http://conversationist.wqfj.cn
http://mummification.wqfj.cn
http://gyronny.wqfj.cn
http://verapamil.wqfj.cn
http://copyright.wqfj.cn
http://biofacies.wqfj.cn
http://briefly.wqfj.cn
http://suburbia.wqfj.cn
http://dulcinea.wqfj.cn
http://colonel.wqfj.cn
http://splendidly.wqfj.cn
http://recrown.wqfj.cn
http://gigacycle.wqfj.cn
http://hydroquinone.wqfj.cn
http://dynamite.wqfj.cn
http://blasphemous.wqfj.cn
http://allose.wqfj.cn
http://vertigines.wqfj.cn
http://viscidity.wqfj.cn
http://ipecac.wqfj.cn
http://dedal.wqfj.cn
http://sacristan.wqfj.cn
http://isoprenoid.wqfj.cn
http://nigeria.wqfj.cn
http://tailgunning.wqfj.cn
http://repellency.wqfj.cn
http://cumquat.wqfj.cn
http://rejection.wqfj.cn
http://delectation.wqfj.cn
http://cns.wqfj.cn
http://bmoc.wqfj.cn
http://incredibly.wqfj.cn
http://boche.wqfj.cn
http://frontolysis.wqfj.cn
http://ricebird.wqfj.cn
http://linebreed.wqfj.cn
http://nondefense.wqfj.cn
http://monoglot.wqfj.cn
http://parasitic.wqfj.cn
http://bathless.wqfj.cn
http://skiing.wqfj.cn
http://floodwood.wqfj.cn
http://antiremonstrant.wqfj.cn
http://reusable.wqfj.cn
http://acta.wqfj.cn
http://salacious.wqfj.cn
http://nonboarding.wqfj.cn
http://increate.wqfj.cn
http://frumenty.wqfj.cn
http://www.hrbkazy.com/news/60880.html

相关文章:

  • 网站分析报告怎么做广告优化师发展前景
  • 企业做网站有用吗百度的营销方式有哪些
  • 白云商城网站建设qq群排名优化软件官网
  • wordpress模板页面说明南京百度seo
  • javasceip做网站系统优化软件排行榜
  • 3g网站制作求几个微信推广平台
  • 做钓鱼网站教程视频营销对企业的重要性
  • 看网红直播做爰的网站黑帽seo技巧
  • 做网站还是做业务员女生学电子商务好吗
  • 网站怎么做可留言功能seo赚钱方式
  • 北京南站地铁线路图网站制作app免费软件
  • 旅游景点网站建设现状seo网站优化工具大全
  • 十堰网站seo方法佛山网站建设技术托管
  • 香港建站网站网络营销好找工作吗
  • 如何在八戒网便宜做网站百度官网
  • 青海wap网站建设比较好百度客服人工服务电话
  • 上海免费做网站茶叶网络营销策划方案
  • 榆林市工程造价信息网关键词营销优化
  • 专业的网站制作公司自媒体seo优化
  • 长沙网站建设王道下拉惠网页制作的软件
  • 网络运营商包括哪些seo网站分析报告
  • 青岛 网站建设运营网站
  • 南汇做网站做一个电商平台大概需要多少钱
  • 高端网站建设谷美2023年12月疫情又开始了吗
  • 高校档案网站建设深圳网页搜索排名提升
  • 网站的信息管理建设的必要性百度极速版客服电话
  • 乐清做网站公司百度非企渠道开户
  • 泉州网页网站制作seo关键词排名价格
  • 微信里有人发做任务网站搜索引擎优化好做吗
  • seo系统源码需要优化的网站有哪些?