我负责维护公司API文档。我们的 API 是用 ASP.NET 编写的。我最近改用 Swashbuckle 5.6.0,它运行得很好。
我遇到的问题是这样的:
我们将数据模型分为 Post 数据和 Get 数据,例如WebAccountGetData.cs和WebAccountPostData.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)