.NetCore设置API post方式可以直接括号内接受参数

众所周知,在.NetCore WebApi中,Post方式的api接收参数时不能像Get那些,直接把接受参数写到方法后边括号内,如:

[HttpPost]
public string GetAreaGroupList(string id){
   return id;
}

这个是因为api默认推理规则,绑定源推理,借助这些规则,无需通过将属性应用于操作参数来手动识别绑定源,其中几种规则为
[FromBody]针对复杂类型参数进行推断。但其不适用于具有特殊含义的任何复杂的内置类型,如IFormCollection和CancellationToken。
[FromForm]针对IFormFile和IFormFileCollection类型的操作参数进行推断。
[FromRoute]针对与路由模板中的参数相匹配的任何操作参数名称进行推断。
[FromQuery]针对任何其他操作参数进行推断。

但是有时不想这么复杂编写api,只想在括号内一个一个写接受参数,那就把默认推理规则关掉就好了。

.NetCore中禁用api推理规则,在Startup.cs ConfigureServices中这样写:

services.AddControllers(cfg => { cfg.Filters.Add(new ExceptionHandleAttribute()); })
                .ConfigureApiBehaviorOptions(options =>
            {
                //options.SuppressConsumesConstraintForFormFileParameters = true;//禁用当[FromForm]属性批注时,推理multipart/form-data请求内容类型
                options.SuppressInferBindingSourcesForParameters = true;//禁用api的推理规则,这样就支持post方式直接括号接受参数和model参数方式
            });

 


版权声明:本文为weixin_33277597原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。