如何优雅的使用contorller层

一个完整的后端请求由 4 部分组成:

  • 接口地址(也就是 URL 地址)

  • 请求方式(一般就是 get、set,当然还有 put、delete)

  • 请求数据(request,有 head 跟 body)

  • 响应数据(response)

  • 它可以很方便的对外提供数据接口服务,也是非常关键的出口,所以非常有必要进行规范统一,使其既简洁又优雅。

    controller层的职责为负责接收和响应请求,一般不负责具体的逻辑业务的实现。controller主要工作如下:

    接收请求并解析参数;

    调用service层执行具体的业务逻辑(可能包含参数校验);

    捕获业务异常做出反馈;

    业务逻辑执行成功做出响应;

目前controller层代码会存在的问题:

  • 参数校验过多地耦合了业务代码,违背了单一职责原则;

    可能在多个业务逻辑中抛出同一个异常,导致代码重复;

    各种异常反馈和成功响应格式不统一,接口对接不友好;

优雅写法一:统一返回结构

优雅写法二:统一包装处理

优雅写法三:参数校验

优雅写法四:自定义异常与统一拦截异常

相关推荐
another heaven27 分钟前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++
文丑颜不良啊2 小时前
LeetCode2821~2840题目解析
java·leetcode
SomeOtherTime2 小时前
Rust 闭包语法和原理(AI回答)
开发语言·后端·rust
apcipot_rain2 小时前
C++转Java日记(10)
java·开发语言
总要学点什么3 小时前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
简 洁 冬冬3 小时前
泛型方法写法全面辨析:从「能编译」到「能跑」到「能用」
java·泛型
LGL6030A3 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习
xiaoye-duck3 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
Funlang4 小时前
龙芯上的 Fun:从跑起来到机器码
开发语言·龙芯
总要学点什么5 小时前
第104篇:三维特效-流动墙体效果——让贴图沿墙流动,它却只肯走一条对角线
开发语言·javascript·ecmascript·gis·webgl·材质·cesium