首页 > 其他分享 >.NET7之MiniAPI(特别篇) .NET Preview5参数绑定

.NET7之MiniAPI(特别篇) .NET Preview5参数绑定

时间:2022-12-06 02:11:45浏览次数:33  
标签:MiniAPI set 特别篇 UUID get Preview5 Logger public Name

  .NET Preview5中,给MiniAPI带来了一个参数绑定的功能,看到这个功能,我一下子就开心了,因为它提供了一个把松散的传入数据或注入功能耦合在一起的能力,并且可以根据自己的需求自由组合,结合上原来的Fromxxx(Name="")]使用,尤其和谐。

  看一下下面的例子,如果每个请求都带有X-UUID,可以直接放在父类里,这样的组合是不是更加灵活多变。

using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/test", ([AsParameters] Order order) =>
{
    order.Logger?.LogInformation(order.UUID);
});

app.Run();

class Header
{
    [FromHeader(Name = "X-UUID")]
    public string? UUID { get; set; }
}
class Order : Header
{
    [FromQuery(Name = "no")]
    public int OrderNo { get; set; }
    public ILogger<Order>? Logger { get; set; }
}

绑定的参数,不只是class,还可以是其他自定义类型。

结构

struct Order 
{
    [FromHeader(Name = "X-UUID")]
    public string? UUID { get; set; }
    [FromQuery(Name = "no")]
    public int OrderNo { get; set; }
    public ILogger<Order>? Logger { get; set; }
}

记录

record Order 
{
    [FromHeader(Name = "X-UUID")]
    public string? UUID { get; set; }
    [FromQuery(Name = "no")]
    public int OrderNo { get; set; }
    public ILogger<Order>? Logger { get; set; }
}

结构记录

record struct Order 
{
    [FromHeader(Name = "X-UUID")]
    public string? UUID { get; set; }
    [FromQuery(Name = "no")]
    public int OrderNo { get; set; }
    public ILogger<Order>? Logger { get; set; }
}

  虽然这只是.NET的一小步,但给开发人员带了一大步,使整个API开发体验得到了,特别对数据接收体验提升了一大截。(以前只是body中的json转成实体类哦)

  想要更快更方便的了解相关知识,可以关注微信公众号 

标签:MiniAPI,set,特别篇,UUID,get,Preview5,Logger,public,Name
From: https://www.cnblogs.com/ljknlb/p/16954090.html

相关文章

  • MiniAPI:.NET7 Preview4之MiniAPI更新总览
    一觉醒来,发现微软带来了.NET7Preview4的更新,本次更新关于MiniAPI的还不少,难以掩饰的喜悦心情,促使我尽快把这个消息分享给大家,那下来我们看一下一共带来了哪些关于MiniA......
  • .NET7之MiniAPI(特别篇):.NET7 Preview3
    .NET7的第三个预览版发布了,同样带来了miniapi的更新,这次带来了路由过滤器,与mvc版的action过滤器相似。具体见https://devblogs.microsoft.com/dotnet/asp-net-core-up......
  • .NET7之MiniAPI(特别篇):.NET7 Preview3
    .NET7的第三个预览版发布了,同样带来了miniapi的更新,这次带来了路由过滤器,与mvc版的action过滤器相似。具体见https://devblogs.microsoft.com/dotnet/asp-net-core-u......
  • .NET7之MiniAPI(特别篇):.NET7 Preview3
    .NET7的第三个预览版发布了,同样带来了miniapi的更新,这次带来了路由过滤器,与mvc版的action过滤器相似。具体见https://devblogs.microsoft.com/dotnet/asp-net-core-u......
  • .NET6之MiniAPI(二十六):封装Dapper
    在上一篇说过,Dapper是通过扩展IDbConnection来达到实现的,那带来的一个问题就是隔离性不好,比如在做单元测试时,mock就有点困难,所以在实践中,我对Dapper作了扩展,下面分享出......
  • .NET6之MiniAPI(二十六):封装Dapper
    在上一篇说过,Dapper是通过扩展IDbConnection来达到实现的,那带来的一个问题就是隔离性不好,比如在做单元测试时,mock就有点困难,所以在实践中,我对Dapper作了扩展,下面分享出......
  • .NET6之MiniAPI(二十九):UnitTest
    MiniAPI的单元测试与asp.netweb api的单元测试大体是相同的(毕竟都是asp.netcore),只是在小细节上有一些差异,文章中会说到这点。本文测试框架是XUnit,Mock框架是Moq,......
  • .NET6之MiniAPI(三十):结束篇
    不知不觉来到了《.NET6之MiniAPI》的第三十篇,回顾之前的篇幅,主要涉及如下:HTTP请求,应答(二,三)配置选项(四,五)依赖注入,中间件(六,七)日志,监控,跟踪,健康检查(八,十三,十九,二十七,二十八......
  • .NET6之MiniAPI(三十):结束篇(附链接)
    不知不觉来到了《.NET6之MiniAPI》的第三十篇,回顾之前的篇幅,主要涉及如下:HTTP请求,应答Request桂素伟,公众号:桂迹.NET6之MiniAPI(二):requestResponse桂素伟,公众......
  • .NET6之MiniAPI(三十):结束篇(附链接)
    不知不觉来到了《.NET6之MiniAPI》的第三十篇,回顾之前的篇幅,主要涉及如下:HTTP请求,应答Request桂素伟,公众号:桂迹.NET6之MiniAPI(二):requestResponse桂素伟,公众......