接入层
接入层面向用户访问的数据入向接口,可按不同场景提供不一样的用户接口实现。面向Web的可使用http restful的方式提供服务,可增加安全认证、权限校验,日志记录等功能;面向微服务的可使用RPC方式提供服务,可增加限流、熔断等功能。
特点
- 关心视图和对外的服务,Restful、页面渲染、websocket、XMPP 连接等
- 为接入端提供身份认证和权限验证服务,VO数据转换
- 只产生接入异常,例如数据校验,对应 HTTP 状态码 400、415 等
- 将数据转换从应用层提到用户接口层更方便不同场景之前的需求变化,同时也保证应用层数据格式的统一性
细分结构
- controller
提供较粗粒度的调用接口,将用户请求委派给一个或多个应用服务进行处理。比如调用应用层创建用户的方法,还包括权限,接口文档,日志等处理。
- VO
适配不同接入端的对象
代码示例
/**
* 租户Controller
*
* @author haoxin
* @date 2021-02-24
**/
@Api(tags = "租户管理")
@RestController
@RequestMapping("/sys/tenant")
public class TenantController extends AbstractController {
@Autowired
private TenantQueryService tenantQueryService;
@Autowired
private TenantApplicationService tenantApplicationService;
/**
* 用户分页查询
*/
@ApiOperation("租户分页查询")
@GetMapping("/list")
@RequiresPermissions("sys:tenant:list")
public Result list(@RequestParam Map<String, Object> params){
Page page = tenantQueryService.queryPage(params);
return Result.ok().put(CommonConstant.PAGE, page);
}
/**
* 禁用租户
*/
@ApiOperation("禁用租户")
@SysLog("禁用租户")
@PostMapping("/disable/{id}")
@RequiresPermissions("sys:tenant:disable")
public Result disable(@PathVariable("id") String id){
tenantApplicationService.disable(id);
return Result.ok();
}
}