这是我见过写得最烂的Controller层代码,没有之一

本文探讨了Controller层代码的常见问题,如返回格式不统一、未考虑失败情况、出现无关输入参数、复杂的输入参数和缺少应返回的数据。强调了接口定义规范的重要性,提出使用ResultBean统一返回格式,以提高代码可读性和避免返工。同时,介绍了Controller的规范,包括返回ResultBean格式、禁止传入特定对象、参数转换和避免打印日志。最后,展示了AOP在处理异常和日志记录中的应用,强调先有规范再有技术的思想,提醒读者注重编码习惯和规范的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一. 接口定义

工作中,少不了要定义各种接口,系统集成要定义接口,前后台掉调用也要定义接口。接口定义一定程度上能反应程序员的编程功底。列举一下工作中我发现大家容易出现的问题:

1. 返回格式不统一

同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。工作中有个系统集成就是这样定义的接口,真是辣眼睛。这个对应代码上,返回的类型是map,json,object,都是不应该的。实际工作中,我们会定义一个统一的格式,就是ResultBean,分页的有另外一个PageResultBea

错误范例:

 

//返回map可读性不好,尽量不要
 @PostMapping("/delete")
 public Map<String, Object> delete(long id, String lang) {

 }

 // 成功返回boolean,失败返回string,大忌
 @PostMapping("/delete")
 public Object delete(long id, String lang) {
   try {
     boolean result = configService.delete(id, local);
     return result;
   } catch (Exception e) {
     log.error(e);
     return e.toString();
   }
 }

2. 没有考虑失败情况

一开始只考虑成功场景,等后面测试发现有错误情况,怎么办,改接口呗,前后台都改。

错误范例:

 

//不返回任何数据,没有考虑失败场景,容易返工
 @PostMapping("/update")
 public void update(long id, xxx) {

 }

3. 出现和业务无关的输入参数

如lang语言,当前用户信息 都不应该出现参数里面,应该从当前会话里面获取。后面讲ThreadLocal会说到怎么样去掉。除了代码可读性不好问题外,尤其是参数出现当前用户信息的,这是个严重问题。

错误范例:

 

// (当前用户删除数据)参数出现lang和userid,尤其是userid,大忌
 @PostMapping("/delete")
 public Map<String, Object> delete(long id, String lang, String userId) {

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘世中-迷途小书童

欢迎IT从业者的头脑风暴

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值