- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前,我有 20 个端点与这 3 行 ProducesResponseType
的代码相同.我正在使用 .NET Core 3.1 和 Swagger。我如何重构我的代码以使其变干(不要重复自己)?
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(SuccessResponse))]
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ErrorResponse))]
[ProducesResponseType(StatusCodes.Status500InternalServerError, Type = typeof(ErrorResponse))]
public IActionResult Controller1(){
// code removed for brevity
}
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(SuccessResponse))]
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ErrorResponse))]
[ProducesResponseType(StatusCodes.Status500InternalServerError, Type = typeof(ErrorResponse))]
public IActionResult Controller2(){
// code removed for brevity
}
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(SuccessResponse))]
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ErrorResponse))]
[ProducesResponseType(StatusCodes.Status500InternalServerError, Type = typeof(ErrorResponse))]
public IActionResult Controller3(){
// code removed for brevity
}
最佳答案
ASP.NET Core 支持 Web API Conventions , 哪个:
...includes a way to extract common API documentation and apply it to multiple actions, controllers, or all controllers within an assembly.
static class
,使用定义约定的方法:
public static class SomeApiConvention
{
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(SuccessResponse))]
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ErrorResponse))]
[ProducesResponseType(StatusCodes.Status500InternalServerError, Type = typeof(ErrorResponse))]
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Any)]
public static void Default() { }
}
类的名称并不重要,但方法的名称会影响约定的应用方式。在上面的例子中,
[ApiConventionNameMatch]
属性禁用此特定功能,以便无论操作的方法名称如何都使用约定。
[ApiConventionType]
属性:
[ApiConventionType(typeof(SomeApiConvention))]
public class Controller1 : ControllerBase
由于
[ApiConventionNameMatch]
,这种方法将约定应用于 Controller 定义的每个 Action 。配置已经突出显示。或者,如果您更改了
Default
到别的东西,例如
Get
,并删除了
[ApiConventionType]
属性,该约定仅适用于名为
Get
的操作。 .
[ApiConventionMethod]
属性:
[ApiConventionMethod(typeof(SomeApiConvention), nameof(SomeApiConvention.Default))]
public IActionResult Action1()
这种方法期望
Type
约定类的名称和要应用的方法的名称。
关于c# - 重构许多重复的 ProducesResponseType 以使其干燥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64814975/
目前,我有 20 个端点与这 3 行 ProducesResponseType 的代码相同.我正在使用 .NET Core 3.1 和 Swagger。我如何重构我的代码以使其变干(不要重复自己)?
我有一个通用的 ASP.NET Core WebApi Controller ,例如: public abstract class EntityController { public IAct
我想了解 ProducesResponseType 的用途。 Microsoft 将过滤器定义为指定操作返回的值和状态代码的类型。 所以我很好奇如果 一个人没有放置 ProductResponseTy
我正在设置 ProducesResponseType,以便用 Swagger 记录它。 如果响应成功(OK => 200),那么它会生成一个 IEnumerable。 [ProducesRespons
我必须从使用 NET CORE 制作的 API 到 .NET 进行“反向” 我在将 [ProducesResponseType] 从 Net Core 更改为有效的 .NET 时遇到问题 例如我有这段
在下面有些人为设计的代码片段中,我创建了一个 Controller 方法,它构成了 ASP.NET Core MVC API 的一部分。该方法用 ProducesResponseType 属性修饰,指
我是一名优秀的程序员,十分优秀!