我正在使用.NET 4.5框架来构建REST API。该API有一个带有多个参数的get
方法,但是当我调用该API时,它表明错误的请求第二个参数为null。实际上,我正在传递第二个参数的值。下面是方法的实现,
[HttpGet()]
[Route("api/Mycontroller/{useid:int}")]
public List<GetDetails> GET([FromUri()] int useid, DateTime loginDate)
{
// Some logic
}
通过C#代码进行请求
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost/abc/");
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage clientResponse = Task.Run(async () => { return await client.GetAsync("api/Mycontroller/" + userid+"?LoginDate=" +TodaysDateParameter); }).Result;
由于错误的请求,结果返回空值。
我尝试了查询字符串的各种可能性,但是没有任何效果。我试图删除路由fromuri()
,fromBody()
,但这也无济于事。
我在做什么错了?
答案 0 :(得分:1)
您还需要将第二个参数添加到您方法的[Route]
属性中,如下所示:
[Route("api/Mycontroller/{useid:int}/{loginDate}")]
public List<GetDetails> GET([FromUri()] int useid, DateTime loginDate)
然后您可以像这样调用API方法:
string queryUrl = $"api/Mycontroller/{userid}/{TodaysDateParameter}";
HttpResponseMessage clientResponse = Task.Run(async () => { return await client.GetAsync(queryUrl).Result;