【发布时间】:2017-02-08 22:21:20
【问题描述】:
我有一个 RESTful Web API 项目,我有 2 个不同的 Enum 场景,我不确定它们是否是最佳实践。
场景 1:简单的枚举参数
我的 API 方法需要一个名为 ruleType 的参数,有效值为 EmailAddress 和 IPAddress。
我在 Web API 项目中的枚举如下所示:
public enum RuleType
{
None = 0,
EmailAddress = 1,
IPAddress = 2
}
我对这种情况的问题是,我是否应该在对 API 的请求中使用 ?ruleType=EmailAddress(它会自动将该值绑定到 API 方法中的 RuleType 属性)?如果是这样,如何最好地验证发送的 RuleType 参数是有效的 RuleType Enum 值?
场景 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,或者是否有更好的方法关于这个?
【问题讨论】:
标签: c# rest asp.net-web-api enums