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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET7之MiniAPI(特别篇) .NET Preview5参数绑定相关的知识,希望对你有一定的参考价值。

.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转成实体类哦)

以上是关于.NET7之MiniAPI(特别篇) .NET Preview5参数绑定的主要内容,如果未能解决你的问题,请参考以下文章

.NET7之MiniAPI(特别篇):.NET7 Preview3

.NET7之MiniAPI(特别篇) :Preview6 缓存和限流

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

.NET7之MiniAPI(特别篇) :Preview5优化了JWT验证(下)

MiniAPI:.NET7 Preview4之MiniAPI更新总览

.NET7 Preview4 之OpenAPI swagger改进