分类 Code 下的文章

.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]特性中完成)。

BackEnd

DotNet Core 6

  1. 安装Nuget包Cors;
  2. 注册服务:

    builder.Services.AddCors(options =>
    {
        options.AddPolicy
        (
            name:"Cors",
            builder =>
            {
                builder.WithOrigins("*", "*", "*")
                .AllowAnyOrigin()
                .AllowAnyHeader()
                .AllowAnyMethod();
            }
    
         );
    });
  3. 启用服务:

    app.UseCors("Cors");
    

builder.Services.AddCors(c=>c.AddPolicy("any",p=>p.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin()));
app.UseCors();
controller添加特性[EnableCors("any")]

举例:

API描述
GET /api/items获取所有item
GET /api/item/{id}获取制定项
POST /api/items添加新项
PUT /api/items/{id}更新现有项
DELETE /api/items/{id}删除现有项
不常用:
PATCH /api/items/{id}更新现有项部分内容

Controller上添加特性 [Route("/api/[controller]")],自动对应其到方法。
若有多于一个方法,则需要在方法上添加 Route 特性覆盖类特效独立映射,或者在路由中添加'[action]'映射到方法名,也可以在Http方法特性上独立独立映射,如[HttpGet('121')]映射到'类path/Get/123',必须所有public方法都有路由。

Route可以{}传参,若方法有参数,则会要求参数,若{}中有参数,则必填(参数名需相同,若不同则仅方法参数能拿到),由此可实现伪静态,。

所有公开Action必须有路由,否则编译报错。(由ApiController实现)

ApiCOntroller实现:

  • 属性路由要求
  • 自动Http400响应
  • 绑定源参数推理
  • Multipart/form-data请求推理(验证数据类型)
  • 错误状态代码的问题详细信息