Mario .NET Core简单快速开发框架

Mario是一个基于.NET Core的简单快速开发框架

GitHub:https://github.com/deeround/Mario

技术特点

基于.NET Core 2.2 集成常用三方组件
AutoMapper
FluentValidation
Newtonsoft.Json
NLog
Swashbuckle

支持jwt认证、支持API资源权限验证
支持swagger中API分组显示
所有服务自动注入,无需手动注入

......

使用场景

中小型项目有时候并不需要各种复杂的驱动设计,复杂的分层设计,只需简单业务逻辑开发。Mario框架就是为了简化我们开发,减少各种繁琐的配置注入,只需关注于业务逻辑开发本身。

框架结构

项目 说明
Mario.Core 底层核心库
Mario.Data 数据封装库
Mario.Mvc WebApi封装库
Mario.Web WebApi业务库
WangSql 数据底层库

业务模块开发

简单模块

当我们业务非常简单,我们连实体类都不写的应用场景,就是简单直接干,只用写API,直接在控制器写业务就行了。

分为以下几步即可完成:
1、模块相关配置

  • 配置swagger信息,每个模块都是配置swagger信息(需要开启API分组功能)
  • 配置数据库信息,可以配置多个多种数据库(支持很多数据库的)
2、添加模块目录

  • Test就是模块
  • Test\Controllers就是API,在控制器里面写业务逻辑就行了
  • Test\ApiModule.cs为模块启动初始化类,可以在里面写模块初始化逻辑
3、添加测试控制器

在Test\Controllers下添加Test控制器

    public class TestController : ApiController
    {
        /// <summary>
        /// 演示使用原始方法和扩展方法查询数据
        /// </summary>
        /// <returns></returns>
        [HttpGet()]
        public IList<Dictionary<string, object>> GetList()
        {
            return SqlMapper.Query<Dictionary<string, object>>("select * from T_SYS_USER", null).ToList(); //原始方法
            //return SqlMapper.ListSod("select * from T_SYS_USER"); //扩展方法
        }

        /// <summary>
        /// 分页查询
        /// </summary>
        /// <returns></returns>
        [HttpGet()]
        public PageData<StrObjDict> GetPage(string name)
        {
            string sql = "select * from T_SYS_USER where 1=1";
            StrObjDict sod = new StrObjDict();
            if (!string.IsNullOrEmpty(name))
            {
                sql += $" and USERNAME like '%$USERNAME$%'";
                sod.Add("USERNAME", name);
            }
            //排序设置
            sql += $" order by USERNAME desc";

            return SqlMapper.PageSod(sql, sod, 1, 20, out int total);
        }

        /// <summary>
        /// 定义好入参,但不定义出参格式
        /// 方便扩展入参,也可使用swagger直接测试,但是前端无法通过swagger查看接口出参格式,只有请求后才知道出参格式
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        [HttpGet()]
        public IList<StrObjDict> GetByName(string name)
        {
            //return SqlMapper.ListSod("select * from T_SYS_USER where USERNAME like '%$USERNAME$%'", name); //写法1
            return SqlMapper.ListSod("select * from T_SYS_USER where USERNAME like '%$USERNAME$%'", new StrObjDict() { { "USERNAME", name } }); //写法1

        }

        /// <summary>
        /// 这个是上面方法另一种写法
        /// 这种方法不固定入参,可随时添加删除入参,但是无法使用swagger直接测试,可使用postman等其他接口工具测试
        /// 这种方法前端入参和出参都不知道格式,需要前后端提前约定好出入参
        /// </summary>
        /// <returns></returns>
        [HttpGet()]
        public IList<StrObjDict> GetByNameNoParam()
        {
            var param = ApiContext.GetRequestParam();
            string name = param.GetString("name");

            //return SqlMapper.ListSod("select * from T_SYS_USER where USERNAME like '%$USERNAME$%'", name); //写法1
            return SqlMapper.ListSod("select * from T_SYS_USER where USERNAME like '%$USERNAME$%'", new StrObjDict() { { "USERNAME", name } }); //写法1

        }

    }
4、使用swagger测试API

访问 http://localhost:4567/swagger/index.html

复杂模块

包含dto和实体相互转换、实体验证、登录验证、加入service层等
主要用于展示框架更多功能,实际上框架还有更多特性供探索。

具体代码请查看GitHub

GitHub & 说明

GitHub link https://github.com/deeround/Mario

Mario框架仅仅提供给大家学习使用,现在只有后端,暂无前端,后期可能考虑使用vue做个admin模板,目前还在完善中......

Mario是一个基于.NETCore的简单快速开发框架的更多相关文章

  1. TomatoLog 是一个基于 .NETCore 平台的产品。

    TomatoLog TomatoLog 是一个基于 .NETCore 平台的产品. The TomatoLog 是一个中间件,包含客户端.服务端,非常容易使用和部署. 客户端实现了ILoggerFac ...

  2. jmGraph:一个基于html5的简单画图组件

    jmGraph:一个基于html5的简单画图组件 特性: 代码书写简单易理解 面向对象的代码结构 对图形控件化 样式抽离 模块化:入seajs实现模块化开发 兼容性:暂只推荐支持html5的浏览器:i ...

  3. ABP开发框架前后端开发系列---(14)基于Winform的ABP快速开发框架

    前面介绍了很多ABP系列的文章,一步一步的把我们日常开发中涉及到的Web API服务构建.登录日志和操作审计日志.字典管理模块.省份城市的信息维护.权限管理模块中的组织机构.用户.角色.权限.菜单等内 ...

  4. [基于NetCore的简单博客系统]-登录

    0-项目背景 一个基于.NET CORE RAZOR PAGES的简单博客系统 技术栈全部采用微软官方实现方式,目的是熟悉新技术 项目地址:https://github.com/ganqiyin/BL ...

  5. 02 基于umi搭建React快速开发框架(国际化)

    前言 之前写过一篇关于React的国际化文章,主要是用react-intl库,雅虎开源的.react-intl是用高阶组件包装一层来做国际化. 基于组件化会有一些问题,比如在一些工具方法中需要国际化, ...

  6. 01 基于umi搭建React快速开发框架

    介绍 基于umi搭建一个快速开发框架,react 应用框架.umi 以路由为基础的,支持类 next.js 的约定式路由,以及各种进阶的路由功能,并以此进行功能扩展,比如支持路由级的按需加载. 我们会 ...

  7. 一个基于jQuery的简单树形菜单

    在工作中的项目使用的是一个前端基于 jQuery easyui 的一个系统,其中左侧的主菜单使用的是 easyui 中的 tree 组件,不是太熟悉,不过感觉不是太好用. 比如 easyui 中的 t ...

  8. AgileRepository - 一个基于接口的Repository快速开发库

    AgileRepository 这是一个可以帮助你快速开发Repository的lib.有点像SpringData JPA根据方法名.注解来自动生成查询方法的功能. 对于一些简单的查询,只需要定义接口 ...

  9. 学习LSM(Linux security module)之四:一个基于LSM的简单沙箱的设计与实现

    嗯!如题,一个简单的基于LSM的沙箱设计.环境是Linux v4.4.28.一个比较新的版本,所以在实现过程中很难找到资料,而且还有各种坑逼,所以大部分的时间都是在看源码,虽然写的很烂,但是感觉收获还 ...

随机推荐

  1. linux死机解决办法

    linux死机后不要长按电源建强制关机,容易对损坏系统配置或者电脑硬件,导致重启后产生不必要的麻烦 如果是在图形界面下死机的话,不要再依赖任何图形界面的工具,解决方法如下: 1.一种方式是进入终端界面 ...

  2. Office系列(1)---将Office文件(Word、PPT、Excel)转换为PDF文件

    需求: 将Office文件作为文章并在网页上预览,主要为(Word.PPT.Excel)3种类型文件. 研究了一下,找到了两种解决方案 直接调用微软的在线预览功能实现(预览前提:预览资源必须可以直接通 ...

  3. Maven 基础(二) | 解决依赖冲突的正确姿势

    一.依赖原则 假设,在 JavaMavenService2 模块中,log4j 的版本是 1.2.7,在 JavaMavenService1 模块中,它虽然继承于 JavaMavenService2 ...

  4. Java 项目热部署,节省构建时间的正确姿势

    上周末,帮杨小邪(我的大学室友)远程调试项目.SpringBoot 构建,没有热部署,改一下就得重启相关模块.小小的 bug ,搞了我一个多小时,大部分时间都还在构建上(特么,下次得收钱才行).我跟他 ...

  5. mysql高级复习

    MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.可以得到索引的本质:索引是数据结构,可以简单理解为“排好序的快速查找数据结构”. 数据本身之外,数据库还维护着一 ...

  6. 2018南京现场赛D 模拟退火

    题目链接:https://codeforces.com/gym/101981/attachments 给你n个城市的三维坐标,叫你求得一个坐标使这个坐标到其他城市的最大距离最小,并输出这个距离(距离不 ...

  7. Ansible playbooks常用模块案例操作

    打开git bash 连接ansible服务器,然后进入deploy用户 #ssh root@192.168.96.188 进入python3.6虚拟环境 #su - deploy #source . ...

  8. Nmap使用教程(进阶篇)

    什么是防火墙? 防火墙是用来控制网络访问的软件或硬件.分为以下两类:1.基于主机的防火墙:2.基于网络的防火墙. 基于主机的防火墙 这是在单台主机上运行的软件,用来控制入站流量(从网络向主机)和出站流 ...

  9. [bzoj3529] [洛谷P3312] [Sdoi2014] 数表

    Description 有一张n×m的数表,其第i行第j列(1 < =i < =n,1 < =j < =m)的数值为 能同时整除i和j的所有自然数之和.给定a,计算数表中不大于 ...

  10. 内部类、final与垃圾回收,面试时你一说,面试官就知道

    内部类并不常用,而且使用起来有一定的定式,比如在下面的InnterDemoByTrhead.java里,我们通过内部类的形式创建线程. 1 public class InnerDemoByThread ...