为整个 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,但这看起来比您要求的要多。
在 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
.
[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,但这看起来比您要求的要多。