ASP.NET Web Api HttpClient.GetAsync with parameters
You cannot send a message body for HTTP GET requests and for that reason, you cannot do the same using HttpClient
. However, you can use the URI path and the query string in the request message to pass data. For example, you can have a URI like api/groups/12345?firstname=bill&lastname=Lloyd
and the parameter class MyRequest
like this.
public class MyRequest
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Since MyRequest
is a complex type, you have to specify model binding like this.
public HttpResponseMessage GetGroups([FromUri]MyRequest myRequest)
Now, the MyRequest
parameter will contain the values from the URI path and the query string. In this case, Id
will be 12345, FirstName
will be bill and LastName
will be Lloyd.
Comments
-
Null Reference almost 2 years
I have the following Web Api method signature
public HttpResponseMessage GetGroups(MyRequest myRequest)
In the client, how do I pass MyRequest to the calling method?
Currently, I have something like this
var request = new MyRequest() { RequestId = Guid.NewGuid().ToString() }; var response = client.GetAsync("api/groups").Result;
How can I pass
request
toGetAsync
?If it's a
POST
method, I can do something like thisvar response = client.PostAsJsonAsync("api/groups", request).Result;