bud*_*ble 5 .net c# asp.net asp.net-web-api
我想在.net 4.5上使用ASP.net WebApi创建一个REST Web服务
网址应采用以下格式:
/values?Age=55&Height=176&Race=1&Weight=80&Gender=male&id=800001
Run Code Online (Sandbox Code Playgroud)
关联的控制器如下所示:
[HttpGet]
public string Get(int id, [FromUri]Demographics demographics)
{ // etc.}
Run Code Online (Sandbox Code Playgroud)
人口统计数据是一个自定义对象,基本上只是具有某些属性的DTO.但是,它包含一个具有自定义枚举类型的属性:
enum Gender
{
Female = 0,
Male
}
Run Code Online (Sandbox Code Playgroud)
如果URL是上述格式,则默认映射可以正常工作.但是,当然我还需要检查url提供的参数是否正确.
ASP.net WebApi(afaik)默认尝试根据假定的类型映射每个参数(或者如果它可以转换为该类型).如果它在URI中找不到匹配的值,则假设它只是0.
现在,这将我带到一个非常不幸的情况,根据定义,0仍然是Gender Demographics.Gender(0~Meminual.Female)的有效值.
最简单的解决方案是更改枚举,使0成为我可以检查的"不确定"状态.但是,我无法改变枚举.我可以为Demographics对象创建自己的重载但不愿意这样做,因为我认为必须有一个更好的方法.
我可以明确地将性别参数绑定到URI中的参数,并在未提交时抛出异常吗?
我读到了类型转换器,但我必须处理URI字符串,并认为我必须实现WebApi显然已经具有的很多功能.
请记住,我必须处理URI,不能使用请求正文.
像这样使枚举可为空怎么样?
public class Demographics
{
public Gender? Gender { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在操作方法中,您只需检查是否demographics.Gender为 null 即可。
| 归档时间: |
|
| 查看次数: |
2226 次 |
| 最近记录: |