前言

在之前鼓捣过一次基础工程April.WebApi后,就考虑把常用的类库打包做成一个公共类库,这样既方便维护也方便后续做快速开发使用,仓库地址:April.Util_github,April.Util_gitee,后续会继续推出基于Util的基础工程(包含权限相关)以及如果代码生成器觉得可以了也会推出,先mark不错过。

April.Util

首先,我们创建一个类库工程,当然新建之后就是删掉默认的类,我这里的版本是netstandard 2.0。

然后我们先缕下之前我做基础工程时候需要用到的通用型类库(当然后续会一直跟进补充)。

  • 通用配置 AprilConfig,AprilEnums
  • 缓存相关 CacheUtil,CookieUtil,SessionUtil,RedisUtil
  • 日志相关 LogUtil
  • 路径请求相关 UriUtil
  • 回调相关 ResponseUtil
  • 时间处理相关 DateUtil
  • 验证码相关 CodeUtil
  • 管理员相关 TokenUtil 整理中
  • 加密相关 EncrypUtil
  • Aop相关 AprilLogAttribute
  • 其他扩展类
  • 未完待续

我们所需要引入的NuGet包,尽可能的节省新工程需要引入的类库,这样统一类库环境,方便多工程简单部署问题,当然也可以只引入dll文件,自己在工程中引入需要的环境类库,引入类库列表。

  • log4net
  • Microsoft.AspNetCore.Http.Abstractions
  • Microsoft.AspNetCore.Http.Extensions
  • Microsoft.AspNetCore.Mvc.Abstractions
  • Microsoft.AspNetCore.Session
  • Microsoft.Extensions.Caching.Memory
  • Microsoft.Extensions.Configuration
  • Newtonsoft.Json
  • QRCoder
  • StackExchange.Redis
  • System.Drawing.Common
  • 未完待续

当然其中可能大多在WebApi工程中已经存在或是需要引用,这里存在重复引入的可能,所以需要关注版本问题,但是目前是会根据新版本的稳定版来统一版本问题。

代码可直接从仓库拉取,地址也在开头给出,生成工程之后我们可以得到一个dll文件,就如我前面所说,你可以引入dll文件然后在自己工程打入需要的环境包,也可以发布一个NuGet包,直接引入April.Util。

打包带走

首先,右键Util选择属性,切换到打包界面。

之后我们来发布当前类库工程,发布的过程这里就不再多说了,之后我们根据路径来找到我们发布的类库。

本地使用

如果只是本地自己用的话,也不想发布为公开,可以通过配置NuGet包的地址来获取我们自己的NuGet包。



之后,我们就可以获取我们自己的NuGet了。

发布NuGet

当然你可以选择发布到NuGet仓库,登录NuGet官网,如果没有账号需要注册个google账号。

登录之后,在我们头像下选择上传包。

选择文件,拉到最下面(当然你可以一路看看相关的参数),然后最终的Submit,之后我们就可以看到已经上传成功,但是检索需要等待个把小时,上传的包应该是没法删除,所以这点儿需要注意。

示例

在代码仓库中我连带有个Simple的WebApi,里面引入了Util,包括一些其他的常规使用方法,特别注意下入口文件Startup,当然这个工程后续也是会不断的完善的,至于更新的力度以及代码规范度,emm,个人的力量还是有限,希望也能有更多的人可以一起探讨。

Startup

        public Startup(IConfiguration configuration)
{
Configuration = configuration; AprilConfig.Configuration = configuration;
LogUtil.InitLog(); RedisUtil.InitRedis();
} public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
AprilConfig.ServiceProvider = app.ApplicationServices; }

/// <summary>
/// 示例获取
/// </summary>
/// <returns></returns>
[HttpGet]
[AprilLog]
public ResponseDataEntity Get()
{
var rng = new Random();
var data = Enumerable.Range(1, 2).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)],
Timestamp = (int)DateUtil.ConvertToUnixTimestamp(DateTime.Now.AddDays(index))
})
.ToList();
return ResponseUtil.Success("", data);
} /// <summary>
/// 验证码
/// </summary>
/// <param name="type">是否画线</param>
/// <returns></returns>
[HttpGet]
[Route("Code")]
public FileContentResult Code(int type)
{
string code = CodeUtil.GetSingleObj().CreateVerifyCode(CodeUtil.VerifyCodeType.MixVerifyCode, 6);
//LogUtil.Info($"生成6位验证码:{code}");
bool isAddLines = false;
if (type == 1)
{
isAddLines = true;
}
var bitmap = CodeUtil.GetSingleObj().CreateBitmapByImgVerifyCode(code, 100, 40, isAddLines);
code = EncryptUtil.EncryptDES(code, AprilConfig.SecurityKey);
CookieUtil.AddString("code", code, 5);
MemoryStream stream = new MemoryStream();
bitmap.Save(stream, ImageFormat.Gif);
return File(stream.ToArray(), "image/gif");
}

小结

路漫漫,小半天的整理,但是前前后后的基础工程的路淌了好几版,从netframework到net core,想做一套通用的基础工程以减少开发工作量,但是这种确实没有十全十美的,根据业务来设计才是最合适的,但是规范化这点儿不可缺失,就先从Util开始,一点点的领出来,组件化的来开发,相信往后会越来越好,如果有哪些地方不合适,也希望能有大佬给出指点,一人摸索过河,也请见谅。

net core WebApi——公用库April.Util公开及发布的更多相关文章

  1. net core WebApi——April.Util更新之权限

    目录 前言 权限 中间层 小结 前言 在之前已经提到过,公用类库Util已经开源,目的一是为了简化开发的工作量,毕竟有些常规的功能类库重复率还是挺高的,二是为了一起探讨学习软件开发,用的人越多问题也就 ...

  2. April.Util更新之权限

    目录 前言 权限 中间层 小结 前言 在之前已经提到过,公用类库Util已经开源,目的一是为了简化开发的工作量,毕竟有些常规的功能类库重复率还是挺高的,二是为了一起探讨学习软件开发,用的人越多问题也就 ...

  3. iis部署 .net core webapi

    iis部署 .net core webapi 1.修改应用程序池: IIS 发布站点,这里就不介绍 IIS 安装等.这里要修改的是应用程序池,选择“无托管代码”: 2.下载安装.net core托管捆 ...

  4. net core Webapi基础工程搭建(六)——数据库操作_Part 1

    目录 前言 SqlSugar Service层 BaseService(基类) 小结 前言 后端开发最常打交道的就是数据库了(静态网站靠边),上一篇net core Webapi基础工程搭建(五)-- ...

  5. net core Webapi基础工程搭建(一)——开发工具及环境

    目录 开发工具 版本 后端框架 开发工具 Visual Studio 2019,既然要折腾那就体验最新版的开发工具有什么特殊的地方,之前个人开发使用的是2017. 下载地址:https://visua ...

  6. net core WebApi——文件分片上传与跨域请求处理

    目录 前言 开始 测试 跨域 小结 @ 前言 在之前整理完一套简单的后台基础工程后,因为业务需要鼓捣了文件上传跟下载,整理完后就迫不及待的想分享出来,希望有用到文件相关操作的朋友可以得到些帮助. 开始 ...

  7. net core WebApi——缓存神器Redis

    目录 前言 Redis 使用 RedisUtil 测试 小结 @ 前言 中秋过完不知不觉都已经快两周没动这个工程了,最近业务需要总算开始搞后台云服务了,果断直接net core搞起,在做的中间遇到了不 ...

  8. Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库

    前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. ...

  9. ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

随机推荐

  1. 【SQL】sql统计不同类别的不同状态的数目

    例子:某主机下有5149个设备,设备分不同类别,设备运行会有不同状态(1-正常.2-告警.3-故障.0-离线) sql: SELECT t.DEVICE_TYPE_NAME,SUM(CASE t.DE ...

  2. python语言程序设计基础(嵩天)第四章课后习题部分答案

    p121: *题4.1:猜数字游戏.在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了!”:小于预设的数,显示“遗憾,太小了!”,如此循环,直至猜中该数 ...

  3. Flutter 错误捕获的正确姿势

    背景 我们知道,在软件开发过程中,错误和异常总是在所难免. 不管是客户端的逻辑错误导致的,还是服务器的数据问题导致的,只要出现了异常,我们都需要一个机制来通知我们去处理. 在 APP 的开发过程中,我 ...

  4. 项目二:企业级java电商网站开发(服务端)

    声明:项目源于网络,支持正版教程,学习使用,仅记录在此 项目介绍 企业级java电商网站开发(服务端),模块划分:用户管理,商品管理,商品品类管理,订单管理,订单详情管理,购物车管理,收货地址管理,支 ...

  5. classpath:类路径

    classpath:可以用于web.xml中获取spring springmvc配置文件的位置 用于sprnig配置文件中获取mapper的位置 classpath:可以获取到java目录下的,res ...

  6. eclipse中Tomcat version 9.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5, 6, 7, and 8 Web modules

    eclipse中导入了一个别人的项目,运行时提示没有可以使用的服务器,如下: 查看了下项目属性设置中的服务器,还是提示没有可用服务器: 尝试对部署在已有服务器下的项目Add and Remove... ...

  7. mpvue 页面预加载,新增preLoad生命周期

    存在的必要性:mpvue开发微信小程序,在页面跳转到新页面的过程中会有200ms左右的延迟,这个200ms如果用来请求新页面的接口,那么跳转到新页面或许已经渲染好了页面. 就是两种方式: 1.新页面跳 ...

  8. 纯C语言写的按键驱动,将按键逻辑与按键处理事件分离~

    button drive 杰杰自己写的一个按键驱动,支持单双击.连按.长按:采用回调处理按键事件(自定义消抖时间),使用只需3步,创建按键,按键事件与回调处理函数链接映射,周期检查按键. 源码地址:h ...

  9. CentOS 7 单机安装Redis Cluster(3主3从)

    首先,本篇要基于单实例的安装,你的机器上已经有一个Redishttps://gper.club/articles/7e7e7f7ff7g5egc4g6b 为了节省机器,我们直接把6个Redis实例安装 ...

  10. Java学习笔记之Object常用方法

    Object:万类之祖   == : 比较的是是否是同一个对象,比较的是地址   equals: 是Object里面的方法,默认的是==,比较的是地址,但在String类型里重写为比较内容 一般我们在 ...