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

项目信息

本期更新

  • 新特性

    • [新增] 粘土对象支持任何字符作为 JSON/XML  4.8.6.9 ⏱️2023.02.19 #note_16329657
    • [新增] 动态 WebAPI 自动检查路由是否包含重复参数,如果有自动修正而不是抛异常 4.8.6.5 ⏱️2023.02.17 5f15ea1
    • [新增] byte[] 类型 MD5 加密/比较重载方法 4.8.6.3 ⏱️2023.02.15 #I6F1NT
    • [新增] 动态 WebAPI 支持 [RouteConstraint(":*")] 路由约束 4.8.6.2 ⏱️2023.02.10 #I6E6JA
    • [新增] Swagger 启用登录后配置 CheckUrl 可获取本地存储的 Authorization 请求报文头 4.8.6.2 ⏱️2023.02.10 #I6E3LB
    • [新增] 多语言支持 .json 文件配置方式(推荐) 4.8.6 ⏱️2023.02.08 #I6DL71 #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 #I6CLPT
  • 问题修复

    • [修复] Serve.Run()  #I6G02W 更改导致不配置端口时出现异常无法启动问题 4.8.6.10 ⏱️2023.02.20 #I6G6AR
    • [修复] 粘土对象不支持 数字 作为 JSON/XML 键问题 4.8.6.9 ⏱️2023.02.19 #note_16329657
    • [修复] 动态 WebAPI 不支持嵌套继承 [Route] 特性问题 4.8.6.8 ⏱️2023.02.18 #I6CLPT
    • [修复] Serve.Run(urls: "端口") 设置端口在 .NET6/7 下发布后始终是 80 端口问题 4.8.6.6 ⏱️2023.02.18 #I6G02W
    • [修复] 粘土对象不支持 中文 作为 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 #I6G1JN
    • [调整] Serve.Run() 迷你主机默认添加 JSON 中文乱码处理 4.8.6.3 ⏱️2023.02.15 86b5f9f
  • 文档

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

本期亮点

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 文件配置支持

https://furion.baiqian.ltd/docs/local-language#2111-基于-json-文件多语言

输入图片说明

输入图片说明

输入图片说明

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

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

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

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

新版本:TestMethod 生成路由为:/api/class/mytestTestMethod2 生成路由为:/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 Hash
var 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);
    }
}

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

输入图片说明


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);

输入图片说明

文档更新

输入图片说明

 

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/229068/furion-4-8-6-10-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。