栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Easy.Admin 后端教程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Easy.Admin 后端教程

后端使用介绍
  • 后端主要是用了 NewLife.XCode 作为数据库操作工具,系列教程在此(想要知道怎么添加一个表吗?修改 xml 文件即可得到表对应实体,使劲戳它)。在此基础上,结合 aspnetcore,添加身份认证、异常拦截处理、swagger 文档、自动生成菜单、vue 开发中间件等基础功能。
控制器设计
  • 首先是AdminControllerbase,该类是控制器基类。特性上对应功能分别是路由设置、统一结果封装、Api 控制器声明、身份认证过滤、跨域设置。成员有:当前当前请求对应登录用户、是否超级管理员、处理成功结果返回,处理失败结果返回

      /// 
      /// 基类Api
      /// 
      [Route("api/[controller]")]
      [ApiResultFilter]
      [ApiController]
      [ApiAuthenticateFilter()]
      [EnableCors]
      public class AdminControllerbase : Controllerbase
      {
    
          private IUser _appUser;
    
          /// 
          /// 当前用户
          /// 
          public IUser AppUser
          {
       get => _appUser ?? (_appUser = HttpContext.Features.Get());
       set => _appUser = value;
          }
    
          /// 
          /// 是否超级管理员
          /// 
          public bool IsSupperAdmin => AppUser.Role.IsSystem;
    
          /// 
          /// 返回可带分页的结果
          /// 
          /// 
          /// 
          /// 
          /// 
          protected ApiResult Ok(TResult data, PageParameter p = null)
          {
       return ApiResult.Ok(data, p);
          }
    
          /// 
          /// 返回默认状态为402的结果
          /// 
          /// 
          /// 
          /// 
          protected ApiResult Error(String msg = null, Int32 status = 402)
          {
       return ApiResult.Err(msg, status);
          }
      }
    
  • 接着是实体EntityController,继承自AdminControllerbase,是个泛型类,只接受数据库实体。实体控制器包含列表搜索、单体查看、添加、更新、删除等基础功能,并用ApiAuthorizeFilter特性标记了权限。

    /// 
    /// 基类Api
    /// 
    public class EntityController : AdminControllerbase where TEntity : Entity, new
    {
        /// 
        /// 获取实体列表
        /// 
        /// 分页
        /// 搜索关键字
        /// 
        [Route("Search")]
        [HttpPost]
        [ApiAuthorizeFilter(PermissionFlags.Detail)]
        [DisplayName("搜索{type}")]
        public virtual ApiResult> Search([FromQuery]PageParameter p, [FromQuery]ring key){}
    
        /// 
        /// 获取单对象
        /// 
        /// 对象id
        /// 
        [HttpGet("{id}")]
        [ApiAuthorizeFilter(PermissionFlags.Detail)]
        [DisplayName("查看{type}")]
        public virtual ApiResult Get([FromRoute]string id){}
    
        /// 
        /// 添加
        /// 
        /// 需要添加的对象
        [HttpPost]
        [ApiAuthorizeFilter(PermissionFlags.Insert)]
        [DisplayName("添加{type}")]
        public virtual ApiResult Post([FromBody]TEntity value){}
    
        /// 
        /// 更新
        /// 
        /// 需要更新的对象
        /// 
        [HttpPut]
        [ApiAuthorizeFilter(PermissionFlags.Update)]
        [DisplayName("更新{type}")]
        public virtual ApiResult Put([FromBody]TEntity value){}
    
        /// 
        /// 删除
        /// 
        /// 需要删除对象的id
        [HttpDelete("{id}")]
        [ApiAuthorizeFilter(PermissionFlags.Delete)]
        [DisplayName("删除{type}")]
        public virtual ApiResult Delete([FromRoute]string id){}
    
        /// 
        /// 获取模型列信息
        /// 
        /// 
        [HttpGet]
        [Route("GetColumns")]
        [ApiAuthorizeFilter(PermissionFlags.Detail)]
        [DisplayName("列信息{type}")]
        public virtual ApiResult> GetColumns(){}
    }
    
使用
  • 请确保完成了NewLife.XCode系列教程

  • 添加一个控制器很简单,新增实体之后,继承实体控制器就行,自带 curd,自动生成菜单,默认页面

      /// 
      /// 用户
      /// 
      [Route("api/[controller]")]
      [ApiController]
      [DisplayName("用户")]
      public class UserController : EntityController
      {
      }
    
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号