控制器 Controller
控制器是整个框架的核心,负责处理请求,调用模型和视图,返回响应。
创建控制器
控制器文件存放在 Controllers
目录下,文件名即为控制器名,首字母大写,以 Controller
结尾,例如 SysUserController
。
控制器特性
cs
[Route("api/[controller]/[action]")]
[ApiController]
// 统一继承BaseApiController基类, 传入表对应实体类和主键类型, 内部封装公用的方法
public class SysUserController : BaseApiController<SysUser, int>
{
// ...
}
[Route("api/[controller]/[action]")]
[ApiController]
// 统一继承BaseApiController基类, 传入表对应实体类和主键类型, 内部封装公用的方法
public class SysUserController : BaseApiController<SysUser, int>
{
// ...
}
BaseApiController 基类
内部继承了
ControllerBase
,封装了常用的返回方法,如Success
、Fail
,可以简化代码。统一过滤了表格查询方法: 动态组装分页的过滤条件表达式树, 详细请见
DynamicFilterExpress
方法。
控制器方法
控制器方法默认为 GET
请求,如果需要指定请求方法,可以使用 [HttpGet]
、[HttpPost]
、[HttpPut]
、[HttpDelete]
等特性。
cs
[HttpGet]
public async Task<MessageModel<string>> Get()
{
await _sysUserService.Get(); // 调用服务层方法
return Success();
}
[HttpGet]
public async Task<MessageModel<string>> Get()
{
await _sysUserService.Get(); // 调用服务层方法
return Success();
}
增加权限
- 在控制器方法上增加
[Authorize(Permissions.Name)]
特性,表示该方法需要权限才能访问。
cs
[HttpGet]
[Authorize(Permissions.Name)] // 方法中增加权限特性
public async Task<MessageModel<string>> Get()
{
await _sysUserService.Get(); // 调用服务层方法
return Success();
}
[HttpGet]
[Authorize(Permissions.Name)] // 方法中增加权限特性
public async Task<MessageModel<string>> Get()
{
await _sysUserService.Get(); // 调用服务层方法
return Success();
}
- 在控制器类上增加
[Authorize(Permissions.Name)]
特性,表示该控制器下的所有方法都需要权限才能访问。
cs
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize(Permissions.Name)] // 控制器中增加权限特性
// 统一继承BaseApiController基类, 传入表对应实体类和主键类型, 内部封装公用的方法
public class SysUserController : BaseApiController<SysUser, int>
{
// ...
}
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize(Permissions.Name)] // 控制器中增加权限特性
// 统一继承BaseApiController基类, 传入表对应实体类和主键类型, 内部封装公用的方法
public class SysUserController : BaseApiController<SysUser, int>
{
// ...
}