后端分层职责怎样划分?

小木
  • 296

server层职责,包不包括封装数据(保证可复用前提下)和异常处理,比如这样写server:

async find(query) {
const result = await this.app.mysql.get('person', query);
return result;
}

那么controller层调用就要根据结果判断封装不同结果给前台,异常在controller这里处理.
这样写:

async find(query) {
const result = await this.app.mysql.get('person', query);
if(result){
  return {code:200,...} //可复用封装
}
  return {code:404,...} //可复用封装
}

controller只负责根据状态码添加拼装msg返回给前台.系统异常也在server处理返回{code:500}
应该按照那种来划分.

回复
阅读 1.9k
2 个回答

GraphQL了解下,完美解决你的问题

喵了个咪
  • 171

我的习惯是在controller里只放简单的入参校验(java使用Spring的注解@Validated)和响应结果的包装

逻辑都放在了service层。

  1. 数据的封装一般也是在service层做的,比如:vo转成数据库实体类,经常要这么操作
  2. 发现了逻辑异常就直接抛出一个运行时异常,然后让统一的异常拦截器@ExceptionHandler去处理,用于返回统一的响应数据结构。

喜欢controller保持简洁,哈哈。

感觉迷茫的时候可以去看看xxx最佳实践,很有帮助的。

宣传栏