Evi*_*eer 12 c# asp.net asp.net-web-api
我被指派为应用程序开发WebAPI控制器(我之前从未使用过的东西).一切都很顺利,有一些基本的请求,如GetAllUsers(int id)只是出于测试原因 - 配置本身很好.
现在这是问题所在.我有一种方法
GetAllItems(Carrier carrier),其中Carrier是一个具有许多不同参数的类.由于我们已经在数据库中有一些Carrier实例用于测试目的,我尝试过查询数据库,根据ID(GUID)属性选择Carrier实例,但没有结果.
有没有办法在输入参数是对象时测试GET请求,而不是手动测试单个值(例如int ID),测试方法或某种测试输入参数?
编辑:感谢大家的反馈,我的问题的解决方案实际上比我预期的更容易解决.我绝对乐意给予好评的是你,虽然很遗憾我的名声太低这样做(我是新来的StackOverflow),所以我必须要回到在不久的将来的某个时候这样做.干杯:)
A. *_* M. 20
据我所知,您希望能够直接在URL而不是请求正文中传递运营商的属性.
例如:
[GET] http://localhost/entities?id=000000000000000
Run Code Online (Sandbox Code Playgroud)
你的控制器方法就是这个
GetAllItems(Carrier carrier)
Run Code Online (Sandbox Code Playgroud)
承运人有Id(Guid)财产:
class Carrier {
public Guid Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在WebApi模型绑定方面,Carrier是一个复杂的对象.
模型绑定的默认行为是:
默认情况下,Web API使用以下规则绑定参数:如果参数是"简单"类型,则Web API会尝试从URI获取值.简单类型包括.NET基元类型(int,bool,double等),以及TimeSpan,DateTime,Guid,decimal和string,以及具有可以从字符串转换的类型转换器的任何类型.(稍后有关类型转换器的更多信息.)对于复杂类型,Web API尝试使用媒体类型格式化程序从邮件正文中读取值.
请参阅:http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api
期望与URL中的复杂对象进行模型绑定不是WebApi的默认行为.
如果您希望控制器方法从URL中对复杂对象进行建模绑定,则必须告诉它.
GetAllItems([FromUri] Carrier carrier)
Run Code Online (Sandbox Code Playgroud)
使用FromUri绑定指示符,您可以使用URL中的复杂模型绑定
现在,您甚至可以在URL中添加更多属性映射:
[GET] http://localhost/entities?id=000000000000000&name=ABC
Run Code Online (Sandbox Code Playgroud)
GetAllItems将收到一个Carrier对象,其中填充了:carrier.Id = 0000-00000000000-000; carrier.Name ="ABC"
| 归档时间: |
|
| 查看次数: |
11947 次 |
| 最近记录: |