我们在50个应用程序中拥有1000多个HTTP服务,所有这些服务都HttpPost用于更改服务器状态的操作。我们使用Fiddler来测试我们创建的每个服务,并且两个样板代码始终困扰着我们并阻止了平滑编码。
[FromBody]属性,以便绑定到HTTP Request的主体Content-Type: application/json在HTTP请求中包含内容协商的内容。由于我们超过99%的服务在主体中使用JSON进行POST操作(需要绑定模型),我们如何在ASP.NET Core MVC中干燥这两段代码?换句话说,[FromBody]如果HTTP方法是,如何告诉ASP.NET Core MVC始终对引用类型执行POST,以及如何指示它仅对JSONHTTP请求的正文使用内容协商?
小智 5
简短回答:使用[ApiControllerAttribute],但它还有一些其他限制和功能。
从 asp.net core mvc 2.1 开始,您可以使用属性[ApiControllerAttribute]装饰您的特定控制器、基本控制器或整个程序集。它以多种方式改变您的控制器的行为,其中一种正是您所需要的:默认情况下绑定将查看主体,因此您无需在每个操作上指定[FromBody]。 请注意,它添加了一些您可能需要或不需要的其他功能:
属性路由要求:您需要在所有使用[ApiControllerAttribute]修饰的控制器上使用属性指定路由。
自动 HTTP 400 响应:这就是调用您的操作之前的自动模型验证。
使用[FromForm]装饰您的操作时,多部分/表单数据请求推理。
错误状态码的问题详情:更详细的信息与状态码一起返回。
但是,所有这些功能(属性路由除外)都不是强制执行的,可以根据需要进行更改。
这里更多信息:https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-3.0#multipartform-data-request-inference 这里:HTTPS://www.strathweb .com/2018/02/exploring-the-apicontrollerattribute-and-its-features-for-asp-net-core-mvc-2-1/
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |