2023年5月

与标准默认WebApi区别:
缺少:

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();   

app.UserHttpsRedirection();
app.UseAuthorization();
app.MapControllers();


var builder = webApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello world!");
var app =webApplication .Create(args);
app.MapGet("/", () => "This is a GET");
app.MapPost("/",()=> "This is a POST");
app.MapPut("/", () => "This is a PUT");
app.MapDeleteC"/", () => "This is a DELETE");
app.Run();

这里的第一个参数可以进行路由约束,如app. MapGet("/posts/ {slug:regex(^[a-z0-9_ -]+5)}",(string slug) => $"Post
{slug}");

  • 自定类型

简单或复杂数据结构;

  • IActionResult

返回指定Http状态码;

  • Ok()
  • NotFound()

-ActionResult
可同时返回状态码及对象。
返回值为ActionResult< ItemClass>

.Net Core 3.1之前,需要手动在方法参数前添加参数才能实现RequestPayload反序列化。

特性绑定源
FromBody请求正文
FromForm表单数据
FromHeader请求标头
FromQuery请求查询字符串参数
FromRoute当前请求路由数据
FromServices作为操作参数插入的请求服务

后被[ApiController]特性完成。

若使用method(Type Parameter1, Type p2 );
则会获取 Request 中 Query String Parameter数据(Form表单),若需要获取Data内容应该创建model 并 method(modelClass model),则会json 反序列化Request Payload 成对象(这个转换在[Apicontroller]特性中完成)。