• c# webapi 移除[Frombody]


    1. 增加一个Contrller,命名为BaseController, 并继承Controller
    2. 在BaseController类上增加属性[ApiController]

    原理

    mvc控制器。一般继承的是 Controller (Controller 里面包含视图),对 action 方法参数 模型绑定的时候,参数的推断来源默认是 从表单中获取 相当于默认有 [FromFrom] 这个特性加在参数旁边

    webapi,继承 ControllerBase(里面没有关于视图的方法),webapi 一般加个特性 [ApiController] ,如果加了这个特性,对 action 方法参数 模型绑定的时候,参数的推断来源默认是 从主体中获取 相当于默认有 [FromBody] 这个特性加在参数旁边

    如果没有 [ApiController] 属性或诸如 [FromQuery] 的绑定源属性,ASP.NET Core 运行时会尝试使用复杂对象模型绑定器。 复杂对象模型绑定器按已定义顺序从值提供程序拉取数据。

    | 特性 | 绑定源 |

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

    [ApiController] 属性将推理规则应用于操作参数的默认数据源。 借助这些规则,无需通过将属性应用于操作参数来手动识别绑定源。 绑定源推理规则的行为如下:

    [FromBody] 针对复杂类型参数进行推断。 [FromBody] 不适用于具有特殊含义的任何复杂的内置类型,如 IFormCollection 和 CancellationToken。 绑定源推理代码将忽略这些特殊类型。
    [FromForm] 针对 IFormFile 和 IFormFileCollection 类型的操作参数进行推断。 该特性不针对任何简单类型或用户定义类型进行推断。
    [FromRoute] 针对与路由模板中的参数相匹配的任何操作参数名称进行推断。 当多个路由与一个操作参数匹配时,任何路由值都视为 [FromRoute]。
    [FromQuery] 针对任何其他操作参数进行推断。

    官方文档

    留待后查,同时方便他人
    联系我:renhanlinbsl@163.com
  • 相关阅读:
    Go语言趣学指南lesson3
    简单的>this
    多媒体查询
    解析对象原型链
    笑对人生,坐看云起云落
    HTML5
    javascript函数及作用域的小结
    不得不知call()和apply()
    浅谈弹性盒子布局
    编译原理实验(算符优先文法)
  • 原文地址:https://www.cnblogs.com/ives/p/15158674.html
Copyright © 2020-2023  润新知