小编Mat*_*egg的帖子

如何更改 Swashbuckle 中 POST 和 PUT 的必填字段?

我负责维护公司API文档。我们的 API 是用 ASP.NET 编写的。我最近改用 Swashbuckle 5.6.0,它运行得很好。

我遇到的问题是这样的:

我们将数据模型分为 Post 数据和 Get 数据,例如WebAccountGetData.csWebAccountPostData.cs。创建(POST)和更新(PUT)时可以使用Post数据。

Post 数据类中的大多数(如果不是全部)字段都可以为 null,当调用 API 方法时,存储过程会返回描述缺少/需要哪些字段的错误消息。API 不处理必填字段。

使用可为 null 的字段意味着 Swashbuckle 不会向文档添加必需标志。但我们想根据使用的 Http 方法(Post/Put)来显示某个字段是否为必填字段。

所需示例
API 密钥是必需参数,因为它不可为空。

我知道我可以使用[Required]System.ComponentModel.DataAnnotations 命名空间中的属性,但这会将必需标志应用于 POST 和 PUT 方法,这是我们不希望的。

理想情况下,我想使用自定义属性,在其中可以指定 Post 或 Put 方法中是否需要某个字段。

public class ApiRequiredAttribute : Attribute
{
  public bool RequiredInPost
  {
    get;
    set;
  } = false;

  public bool RequiredInPut
  {
    get;
    set;
  } = false;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

[ApiRequired(RequiredInPost = true)]
public int? ApprovalStatusId
{
  get;
  set; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api swashbuckle redoc

5
推荐指数
1
解决办法
2182
查看次数

标签 统计

asp.net-web-api ×1

c# ×1

redoc ×1

swashbuckle ×1