is there a way to pass an object as a parameter in a Get method in Web API? I have the following case:
In my Web.API project the Get method looks like that:
public IEnumerable<ArticleMetaData> GetComponentXMLByDate(ComponentRequest request)
{
// Some logic here
return articleMeta;
}
My ComponentRequest object looks like:
public class ComponentRequest
{
public string startdate { get; set; }
public string enddate { get; set; }
public string pagenumber { get; set; }
public string pagesize { get; set; }
}
I am trying to call it this way:
http://mydomain.com/api/values/?startdate=121922&enddate=063020&pagenumber=2&pagesize=100
In the method ComponentRequest request is coming as null. If I change the method to accept multiple string parameters instead of the object it works fine.
Am I missing something in my setup?
Web API provides the necessary action methods for HTTP GET, POST, PUT, and DELETE operations. You would typically pass a single object as a parameter to the PUT and POST action methods. Note that Web API does not support passing multiple POST parameters to Web API controller methods by default.
The [FromUri] attribute is prefixed to the parameter to specify that the value should be read from the URI of the request, and the [FromBody] attribute is used to specify that the value should be read from the body of the request.
I think that
public IEnumerable<ArticleMetaData> GetComponentXMLByDate([FromUri]ComponentRequest request)
{
// Some logic here
return articleMeta;
}
should work.
Mike Stall has a good article on how-webapi-does-parameter-binding
You need to use [FromUri]
attribute.
Look at the the following question. ASP.NET MVC Web Api Get Not Mapping QueryString To Strongly Typed Parameter
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With