为整个 class 而不是每个方法设置 HTTP ResponseTypes

Set HTTP ResponseTypes for whole class instead of for each method

在 ASP.NET MVC 项目中,我们有几个端点方法,其中为所有方法设置了一些标签,例如 ProducesResponseType((int)HttpStatusCode.OK) 标签。

有没有办法为 class 中的所有方法设置一些响应?

如您所见,四行代码仅用于状态代码

/// <summary> A summary describing the endpoint</summary>
[HttpPost("RenameSomething/", Name = "Rename[controller]")]
[Produces("application/json")]
[ProducesResponseType((int)HttpStatusCode.OK),
 ProducesResponseType((int)HttpStatusCode.NotFound),
 ProducesResponseType((int)HttpStatusCode.BadRequest),
 ProducesResponseType((int)HttpStatusCode.InternalServerError)]
public ActionResult RenameSomething()

您可以在您的控制器 class 上应用这样的 ProducesResponseType 属性, 因为此属性可以应用于方法或由其 AttributeUsage.

指定的 class
[System.AttributeUsage(  
    System.AttributeTargets.Class |  
    System.AttributeTargets.Method,  
    AllowMultiple=true, Inherited=true
    )]
public class ProducesResponseTypeAttribute : Attribute

[ProducesResponseType((int)HttpStatusCode.OK),
    ProducesResponseType((int)HttpStatusCode.NotFound),
    ProducesResponseType((int)HttpStatusCode.BadRequest),
    ProducesResponseType((int)HttpStatusCode.InternalServerError)
    ]
public class MyController : Controller
{
}

要更进一步,您可以选择 convention based approach,但这看起来比您要求的要多。