第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Easy.Admin 后端教程

標(biāo)簽:
C#

后端使用介绍

  • 后端主要是用了 NewLife.XCode 作为数据库操作工具,系列教程在此(想要知道怎么添加一个表吗?修改 xml 文件即可得到表对应实体,使劲戳它)。在此基础上,结合 aspnetcore,添加身份认证、异常拦截处理、swagger 文档、自动生成菜单、vue 开发中间件等基础功能。

控制器设计

  • 首先是AdminControllerBase,该类是控制器基类。特性上对应功能分别是路由设置、统一结果封装、Api 控制器声明、身份认证过滤、跨域设置。成员有:当前当前请求对应登录用户、是否超级管理员、处理成功结果返回,处理失败结果返回

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

    /// <summary>
    /// 基类Api
    /// </summary>
    public class EntityController<TEntity> : AdminControllerBase where TEntity : Entity<TEntity>, new
    {
        /// <summary>
        /// 获取实体列表
        /// </summary>
        /// <param name="p">分页</param>
        /// <param name="key">搜索关键字</param>
        /// <returns></returns>
        [Route("Search")]
        [HttpPost]
        [ApiAuthorizeFilter(PermissionFlags.Detail)]
        [DisplayName("搜索{type}")]
        public virtual ApiResult<IList<TEntity>> Search([FromQuery]PageParameter p, [FromQuery]ring key){}
    
        /// <summary>
        /// 获取单对象
        /// </summary>
        /// <param name="id">对象id</param>
        /// <returns><see cref="T:TEntity" /></returns>
        [HttpGet("{id}")]
        [ApiAuthorizeFilter(PermissionFlags.Detail)]
        [DisplayName("查看{type}")]
        public virtual ApiResult<TEntity> Get([FromRoute]string id){}
    
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="value">需要添加的对象</param>
        [HttpPost]
        [ApiAuthorizeFilter(PermissionFlags.Insert)]
        [DisplayName("添加{type}")]
        public virtual ApiResult Post([FromBody]TEntity value){}
    
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="value">需要更新的对象</param>
        /// <returns></returns>
        [HttpPut]
        [ApiAuthorizeFilter(PermissionFlags.Update)]
        [DisplayName("更新{type}")]
        public virtual ApiResult Put([FromBody]TEntity value){}
    
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id">需要删除对象的id</param>
        [HttpDelete("{id}")]
        [ApiAuthorizeFilter(PermissionFlags.Delete)]
        [DisplayName("删除{type}")]
        public virtual ApiResult Delete([FromRoute]string id){}
    
        /// <summary>
        /// 获取模型列信息
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [Route("GetColumns")]
        [ApiAuthorizeFilter(PermissionFlags.Detail)]
        [DisplayName("列信息{type}")]
        public virtual ApiResult<List<TableColumnDto>> GetColumns(){}
    }
    

使用

  • 请确保完成了NewLife.XCode系列教程

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

      /// <summary>
      /// 用户
      /// </summary>
      [Route("api/[controller]")]
      [ApiController]
      [DisplayName("用户")]
      public class UserController : EntityController<ApplicationUser>
      {
      }
    
點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消