我想在 .net 4.5 上使用 ASP.net WebApi 创建一个 REST Web 服务
网址应该是这样的格式:
/values?Age=55&Height=176&Race=1&Weight=80&Gender=male&id=800001
关联的控制器如下所示:
[HttpGet]
public string Get(int id, [FromUri]Demographics demographics)
{ // etc.}
其中 Demographics 是一个自定义对象,基本上只是具有某些属性的 DTO。但是,它包含一个具有自定义枚举类型的属性:
enum Gender
{
Female = 0,
Male
}
如果 URL 采用上述格式,默认映射就可以正常工作。但是,当然我还需要检查url提供的参数是否正确。
默认情况下,ASP.net WebApi (afaik) 尝试根据假定的类型(或者是否可以将其转换为该类型)映射每个参数。如果它在 URI 中找不到匹配的值,它似乎假设它只是 0。
现在这把我带到了一个非常不幸的情况,其中 0 根据定义仍然是 Gender Demographics.Gender (0 ~ Gender.Female) 的有效值。
最简单的解决方案是更改枚举,使 0 成为我可以检查的“不确定”状态。但是,我无法更改枚举。我可以为 Demographics 对象创建自己的重载,但不想这样做,因为我认为必须有更好的方法。
我可以将性别参数显式绑定到 URI 中的参数并在未提交时抛出异常吗?
我阅读了有关类型转换器的信息,但我必须处理 URI 字符串,并认为我必须实现 WebApi 显然已经拥有的很多功能。
请记住,我必须处理 URI 并且不能使用请求正文。