.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验证(下)