《学 .NET 从 Furion 开始》,v4.8.6.10 发布

科技资讯 投稿 21500 0 评论

《学 .NET 从 Furion 开始》,v4.8.6.10 发布

项目信息

  • Gitee:https://gitee.com/dotnetchina/Furion

  • Github:https://github.com/MonkSoul/Furion

  • 文档:https://dotnetchina.gitee.io/furion

本期更新

    新特性

    • [新增] 粘土对象支持任何字符作为 JSON/XML 键 4.8.6.9 ⏱️2023.02.19版本号动态 WebAPI 自动检查路由是否包含重复参数,如果有自动修正而不是抛异常 4.8.6.5 ⏱️2023.02.17 5f15ea1

    • [新增] byte[] 类型 MD5 加密/比较重载方法 4.8.6.3 ⏱️2023.02.15版本号WebAPI 支持 [RouteConstraint(":*"] 路由约束 4.8.6.2 ⏱️2023.02.10版本号Swagger 启用登录后配置 CheckUrl 可获取本地存储的 Authorization 请求报文头 4.8.6.2 ⏱️2023.02.10版本号多语言支持 .json 文件配置方式(推荐) 4.8.6 ⏱️2023.02.08版本号#I5DXKP

    • [新增] 定时任务 IScheduler.[Try]UpdateDetail(builder => {} 和 IScheduler.[Try]UpdateTrigger(triggerId, builder => {} 重载方法 4.8.6 ⏱️2023.02.08 6e43a54

  • 突破性变化

    • [升级] 适配 .NET7.0.3 和 .NET6.0.14 4.8.6.3 ⏱️2023.02.15 eecbf83

  • [调整] 动态 WebAPI 生成路由 [HttpMethod(template] 规则 4.8.5.7 ⏱️2023.02.03版本号Serve.Run( 因版本号更改导致不配置端口时出现异常无法启动问题 4.8.6.10 ⏱️2023.02.20版本号数字 作为 JSON/XML 键问题 4.8.6.9 ⏱️2023.02.19版本号WebAPI 不支持嵌套继承 [Route] 特性问题 4.8.6.8 ⏱️2023.02.18版本号Serve.Run(urls: "端口" 设置端口在 .NET6/7 下发布后始终是 80 端口问题 4.8.6.6 ⏱️2023.02.18版本号中文 作为 JSON/XML 键问题 4.8.6.6 ⏱️2023.02.18 4961e01

  • [修复] 远程请求代理模式配置了 WithEncodeUrl = false 无效问题 4.8.6.4 ⏱️2023.02.16 89639ba

  • [修复] 动态 WebAPI 自定义 [HttpMethod(template] 之后生成错误路由 4.8.6.1 ⏱️2023.02.08 59fe53b

  • 其他更改

    • [调整] 脱敏处理 sensitive-words.txt 嵌入文件支持 UTF8 BOM 编码,感谢 @man119 4.8.6.7 ⏱️2023.02.18版本号Serve.Run( 迷你主机默认添加 JSON 中文乱码处理 4.8.6.3 ⏱️2023.02.15 86b5f9f

  • 文档

    • [新增] 

    • 多语言 .json 配置方式文档
  • [更新] 日志文档、定时任务文档、动态 WebAPI 文档,规范化结果文档,App 静态类文档,Oops 静态类文档、虚拟文件系统文档 !704,远程请求文档,序列化文档、入门文档、脱敏模块文档

  • 贡献者

    • Andy (@man119

  • liuhll (@liuhll2

  • 大柚 (@big-pomelo

  • WR_YT (@wr-yt

本期亮点

1. 新增定时任务更新作业信息和作业触发器方法

  • 更新作业信息

// 返回 ScheduleResult 类型
var scheduleResult = Scheduler.TryUpdateDetail(jobBuilder =>
{
      jobBuilder.SetDescription("~~~";
}, 
out
 
var jobDetail;
// 无返回值
scheduler.UpdateDetail(jobBuilder =>
{
      jobBuilder.SetDescription("~~~";
};
  • 更新作业触发器

// 返回 ScheduleResult 类型var scheduleResult = scheduler.TryUpdateTrigger("triggerId", triggerBuilder =>
{
      triggerBuilder.SetDescription("~~";
}, out var trigger;// 无返回值scheduler.UpdateTrigger("triggerId", triggerBuilder =>
{
      triggerBuilder.SetDescription("~~";
};

2. 新增多语言 .json 文件配置支持

基于-json-文件多语言

《学 .NET 从 Furion 开始》,v4.8.6.10 发布

《学 .NET 从 Furion 开始》,v4.8.6.10 发布

《学 .NET 从 Furion 开始》,v4.8.6.10 发布

L.Text["Furion"];   // => 如果设置为英文,但是没有文件,则直接输出 “Furion”


3. 动态 WebAPI 路由规则小调整

在过去,TestMethod 生成路由为:/mytest

// 注意这里没有 [Route] 特性public class ClassService: IDynamicApiController{    [HttpPost("mytest"]public void TestMethod(    {    } }

新版本:TestMethod 生成路由为:/api/class/mytest,TestMethod2 生成路由为:/mytest。

// 注意这里没有 [Route] 特性public class ClassService: IDynamicApiController{    [HttpPost("mytest"]public void TestMethod(    {    }    [HttpPost("/mytest"]public void TestMethod2(    {    } }

也就是新版本如果不需要自动添加前缀,需在前面添加 /,旧版本不需要。


4. 动态 WebAPI 路由约束 [RouteConstraint(":*"] 支持

public class TestService: DynamicApiController{// 生成的路由为:/api/test/catch-all1/{*path}[HttpGet]public string CatchAll1([RouteConstraint(":*"] string path    {return path;    }// 生成的路由为:/api/test/aaa/bbb/ccc/{*path}[HttpGet("aaa/bbb/ccc"]public string CatchAll2([RouteConstraint(":*"] string path    {return path;    }// 生成的路由为:/aaa/bbb/ccc/{*path}[HttpGet("/aaa/bbb/ccc/{*path}"]public string CatchAll3(string path    {return path;    } }


5. 新增 MD5 加密支持 byte[] 类型参数

// Furion 4.8.6.3+ 版本支持 byte[] 类型,如获取文件 MD5 Hashvar bytes = File.ReadAllBytes("image.png";var md5Hash = MD5Encryption.Encrypt(bytes; // 加密var isEqual = MD5Encryption.Compare(bytes, md5Hash;  // 比较


6. 支持路由模板带重复参数

public class WithClass : IDynamicApiController{    [HttpGet("system/role/deptTree/{roleId}"]  // 过去版本抛异常,Furion 4.8.6.5+ 正常~public string GetResult2(string roleId    {return nameof(Furion;    } }

过去版本会抛异常,新版本不会。

《学 .NET 从 Furion 开始》,v4.8.6.10 发布


7. 粘土对象支持任何字符作为键

// 数字作为键
var
 str = "{\"data\": {\r\n  \"16347413030322\": {\r\n    \"componentType\": \"@ali/tdmod-od-pc-offer-discount\",\r\n    \"trackInfo\": {},\r\n    \"data\": {\r\n      \"couponList\": [{ \"couponType\": \"CARD\", \"couponContent\": \"1件混批\" }],\r\n      \"pageName\": \"Page_GetCoupon\"\r\n      }\r\n    }\r\n  }\r\n}";
var
 a = Clay.Parse(str;
var
 a1 = a["data"]["16347413030322"]["componentType"];
Console.WriteLine(a1;
// 中文作为键
var
 str1 = "{\"data\": {\r\n  \"中文\": {\r\n    \"componentType\": \"@ali/tdmod-od-pc-offer-discount\",\r\n    \"trackInfo\": {},\r\n    \"data\": {\r\n      \"couponList\": [{ \"couponType\": \"CARD\", \"couponContent\": \"1件混批\" }],\r\n      \"pageName\": \"Page_GetCoupon\"\r\n      }\r\n    }\r\n  }\r\n}";
var
 b = Clay.Parse(str1;
var
 b1 = b["data"]["中文"]["componentType"];
Console.WriteLine(b1;
// 符号作为键
var
 str2 = "{\"data\": {\r\n  \"~\": {\r\n    \"componentType\": \"@ali/tdmod-od-pc-offer-discount\",\r\n    \"trackInfo\": {},\r\n    \"data\": {\r\n      \"couponList\": [{ \"couponType\": \"CARD\", \"couponContent\": \"1件混批\" }],\r\n      \"pageName\": \"Page_GetCoupon\"\r\n      }\r\n    }\r\n  }\r\n}";
var
 c = Clay.Parse(str2;
var
 c1 = c["data"]["~"]["componentType"];
Console.WriteLine(c1;
// 大杂烩作为键
var
 str3 = "{\"data\": {\r\n  \"^123,中文~,!\": {\r\n    \"componentType\": \"@ali/tdmod-od-pc-offer-discount\",\r\n    \"trackInfo\": {},\r\n    \"data\": {\r\n      \"couponList\": [{ \"couponType\": \"CARD\", \"couponContent\": \"1件混批\" }],\r\n      \"pageName\": \"Page_GetCoupon\"\r\n      }\r\n    }\r\n  }\r\n}";
var
 d = Clay.Parse(str3;
var
 d1 = c["data"]["^123,中文~,!"]["componentType"];
Console.WriteLine(d1;

《学 .NET 从 Furion 开始》,v4.8.6.10 发布

文档更新

《学 .NET 从 Furion 开始》,v4.8.6.10 发布

编程笔记 » 《学 .NET 从 Furion 开始》,v4.8.6.10 发布

赞同 (34) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽