小编Vik*_*tor的帖子

当枚举值不解析时如何将枚举视为字符串绑定失败

在我们的ASP.net Core Web API应用程序中,当我的控制器方法接受将ENUMs反序列化为字符串的ENUM属性的复杂对象时,我正在寻找一种捕获绑定错误的方法。

例如。

class Person
{
    public string Name {get; set;}
    public SexEnum Sex {get; set;}
}

enum SexEnum
{
    Male,
    Female
}
Run Code Online (Sandbox Code Playgroud)

我们使用整个系统,StringEnumConverter因此JSON序列化实例Person如下所示:

{
    "name": "Ann",
    "sex": "female"
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我发布此JSON(请注意sex属性中的错字):

{
    "name": "Ann",
    "sex": "femal"
}
Run Code Online (Sandbox Code Playgroud)

由于绑定失败,控制器方法接收到的整个对象为NULL。

我想捕获该绑定错误,而不是让管道像没有什么错误一样进入控制器,而是向客户端返回一个BAD REQUEST,其中包括未能绑定哪个属性值的详细信息。

我知道我要反序列化的类型,我知道我要反序列化的属性类型,我可以看到该值未解析为该类型。因此,我认为必须有一种方法可以将详细信息提供给客户。我只是不知道在哪里以及如何插入它。

我希望该解决方案在整个系统范围内,以便涵盖所有枚举,而不必将属性放在模型的属性或枚举本身上。(这是因为我们将API模型作为nuget包分发,不能有任何依赖关系。)

enums model-binding asp.net-web-api asp.net-core

6
推荐指数
2
解决办法
3894
查看次数

在net5 web api中升级Swashbuckle后如何使用SwaggerResponse?

我们有一个包含约 150 个控制器(约 500 个方法)的 Web API,我们将其从 Core2.2 升级到 net5.0,并随之升级了 Swashbuckle 包。

旧版本的 Swashbuckle 使用SwaggerResponse属性在 SwaggerUI 上显示信息,我们在大约 500 个方法中大量使用了它。

在某些时候,该SwaggerResponse属性已被弃用,推荐的解决方案是另一种方法: https: //github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/159

有没有办法

  • 使用SwaggerResponse最新 Swashbuckle 中的属性,或者
  • 转换现有代码?

swagger swashbuckle asp.net5

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