gpt4 book ai didi

c# - 在 Web API 中传递枚举参数的最佳实践

转载 作者:IT王子 更新时间:2023-10-29 04:38:37 29 4
gpt4 key购买 nike

我有一个 RESTful Web API 项目,我有 2 个不同的枚举场景,我不确定最佳实践。

场景 1:简单的枚举参数

我的 API 方法需要一个名为 ruleType 的参数,有效值为 EmailAddressIPAddress。我在 Web API 项目中的枚举如下所示:

public enum RuleType
{
None = 0,
EmailAddress = 1,
IPAddress = 2
}

对于这种情况,我的问题是,我是否应该在对 API 的请求中使用 ?ruleType=EmailAddress(它会自动将该值绑定(bind)到我在 API 中的 RuleType 属性方法)?如果是这样,如何最好地验证发送的 RuleType 参数是有效的 RuleType 枚举值?

场景 2:单个参数的多个枚举值

我的 API 方法有一个可选的 fields 参数,它允许您指定应返回的任何其他数据。例如。 &fields=ruleOwner,rule。这将在响应中返回这 2 位额外的数据。

我在 Web API 项目中有一个枚举,它与可能请求的每个可能的 field 相关,目前,我正在拆分逗号分隔的字段参数,然后遍历每个字符串表示形式该枚举,将其解析为等效的枚举,生成一个枚举值列表,然后我可以在我的 API 中使用它来检索相关数据。

这是枚举:

public enum OptionalField
{
None = 0,
RuleOwner = 1,
Rule = 2,
etc.
}

这里的最佳做法是什么?我正在研究按位枚举,因此在 API 请求中发送了一个值,这导致了 fields 的任意组合,但不知道这是否适用于 Web API,或者是否通常有更好的方法吗?

最佳答案

最简单的答案是“没关系”。

如果你controller方法中的参数是枚举类型

public IHttpActionResult Foo(RuleType ruleType)

在 WebAPI 中,它正常工作 - 无论客户端请求 URL 将参数值指定为 ?ruleType=1 还是 ?ruleType=EmailAddress

如果客户端指定的值对枚举无效,则会抛出异常(参数字典包含方法“Foo”的非可空类型“RuleType”的参数“ruleType”的空条目' ... 并且客户端收到 400 Bad Request 响应。

关于c# - 在 Web API 中传递枚举参数的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39789818/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com