How to write map/route for multiple Posthttp://forums.asp.net/t/1785413.aspx/1?How+to+write+map+route+for+multiple+PostFri, 30 Mar 2012 17:38:04 -040017854134900087http://forums.asp.net/p/1785413/4900087.aspx/1?How+to+write+map+route+for+multiple+PostHow to write map/route for multiple Post <p>Hi I have an API Controller which required multiple POST :</p> <p>one for Save/Update :</p> <pre class="prettyprint">public Order PostOrder(Order order) { }</pre> <p></p> <p>And, another for Search Order</p> <pre class="prettyprint">public IQueryable&lt;Order&gt; SearchWithParameter(SearchOrderParameter searchParameter) { }</pre> <p></p> <p>I have added below Route method in Global.asax</p> <pre class="prettyprint"> routes.MapHttpRoute( name: "SearchWithParameter", routeTemplate: "api/{controller}/{action}/{searchParameter}", defaults: new { action = "post" } );</pre> <p></p> <p>In Js I am calling it as :</p> <pre class="prettyprint">var SearchOrderParameter = new Object(); SearchOrderParameter.OrderID = 1197; &#36;.ajax({ url: "http://localhost:9003/api/orders/SearchWithParameter", data: SearchOrderParameter, type: "Post", dataType: "json", success: function (value) { alert(value); }, error: function (jqXHR, textStatus, errorThrown) { alert(textStatus); } });</pre> <p></p> <p>But everytime this method calls <strong>PostOrder</strong>. Please guide me, What I am missing, so that it will call <strong>SearchWithParameter.</strong></p> <p><strong>Thanks </strong></p> <p><strong>Andy<br> </strong></p> <p></p> 2012-03-26T17:01:44-04:004900487http://forums.asp.net/p/1785413/4900487.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Try removing the {searchParameter} in your template. Is this necessary, I don't see it in your example call.</p> 2012-03-26T22:32:33-04:004900500http://forums.asp.net/p/1785413/4900500.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>&quot;Try removing the {searchParameter} in your template. Is this necessary&quot;</p> <p>I tried after remove {searchParameter}...but again it call <strong>PostOrder</strong></p> <p>&quot;I don't see it in your example call.&quot;</p> <pre class="prettyprint">public IQueryable&lt;Order&gt; SearchWithParameter(SearchOrderParameter searchParameter) { }</pre> <p>above is the place where I am calling searchParameter.<br> <br> </p> 2012-03-26T22:57:14-04:004900505http://forums.asp.net/p/1785413/4900505.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Can you post your entire OrdersController?</p> 2012-03-26T23:01:30-04:004900567http://forums.asp.net/p/1785413/4900567.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>As in my first post those are only two methods in OrdersController.</p> 2012-03-27T00:53:25-04:004900588http://forums.asp.net/p/1785413/4900588.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>There must be another route that is being selected. What other routes do you have in your global.asax?</p> 2012-03-27T01:27:30-04:004900589http://forums.asp.net/p/1785413/4900589.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Below is the code for RouteRegister</p> <pre class="prettyprint">public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(&quot;{resource}.axd/{*pathInfo}&quot;); routes.MapHttpRoute( name: &quot;DefaultApi&quot;, routeTemplate: &quot;api/{controller}/{id}&quot;, defaults: new { id = RouteParameter.Optional } ); routes.MapRoute( name: &quot;Default&quot;, url: &quot;{controller}/{action}/{id}&quot;, defaults: new { controller = &quot;Home&quot;, action = &quot;Index&quot;, id = UrlParameter.Optional } ); routes.MapHttpRoute( name: &quot;SearchWithParameter&quot;, routeTemplate: &quot;api/{controller}/{action}/{searchParameter}&quot;, defaults: new { action = &quot;post&quot; } ); }</pre> <p><br> <br> </p> 2012-03-27T01:31:42-04:004900609http://forums.asp.net/p/1785413/4900609.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>To select the correct route, use the following Post request: /api/order/SearchWithParameter/somevalue.</p> <p>Currently, it is selecting this route for your request /api/orders/SearchWithParameter/:&nbsp;</p> <pre class="prettyprint">routes.MapHttpRoute( name: &quot;DefaultApi&quot;, routeTemplate: &quot;api/{controller}/{id}&quot;, defaults: new { id = RouteParameter.Optional } );</pre> <p><br> <br> </p> 2012-03-27T01:46:34-04:004900629http://forums.asp.net/p/1785413/4900629.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Hi Dave, appreciate your help...can you please help me to write this in js.</p> 2012-03-27T02:09:24-04:004900631http://forums.asp.net/p/1785413/4900631.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>My suggestion is to remove the &quot;DefaultApi&quot; route in RegsiterRoutes. (I assume you do not have a use for it) And then remove the {searchParameter} value in your route template. &nbsp;If you do this, you will not have to modify your &nbsp;javascript and it will route correctly.</p> 2012-03-27T02:15:41-04:004900636http://forums.asp.net/p/1785413/4900636.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Although in current situation I am not using it....but open for it.</p> <p>In future... I need to add some more Post/Get methods...what to do in that situation ?</p> <p>Basically ....I need to know the right way to use multiple GET or POST in a single API controller.</p> 2012-03-27T02:19:50-04:004900643http://forums.asp.net/p/1785413/4900643.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Here is the requirement</p> <ul> <li>Order can be search by ID : GetOrderbyID ( int id) </li><li>To get all Order : GetAllOrder() </li><li>To serach Order by different search parameter : SearchWithParameter(SearchOrderParameter searchParameter) </li><li>Save or update Order : <pre class="prettyprint">PostOrder(Order order)</pre> </li><li>Delete Order by OrderID : DeleteOrder( int orderId ) </li><li>Delete Order by OrderItem : DeleteOrderByOrderItem( int orderItemID ) </li></ul> <p>etc.</p> 2012-03-27T02:38:02-04:004900678http://forums.asp.net/p/1785413/4900678.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Do you have specific requirements for the URI(s)? For example, what would you like your delete uri(s) to look like?</p> 2012-03-27T03:20:11-04:004900684http://forums.asp.net/p/1785413/4900684.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Hey Dave, currently I am looking only for</p> <ul> <li>To serach Order by different search parameter : SearchWithParameter(SearchOrderParameter searchParameter) </li><li>Save or update Order : <span class="typ">PostOrder</span><span class="pun">(</span><span class="typ">Order</span><span class="pln"> order</span><span class="pun">)</span> </li></ul> 2012-03-27T03:27:48-04:004900698http://forums.asp.net/p/1785413/4900698.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Ok, this scenario works as stated earlier. The reason it did not work previously is because you had an additional path on the route template and the route engine never matched this route. That is, /api/orders/SearchWithParameter would never match /api/{controller}/{action}/{searchWithParameter}.&nbsp;</p> 2012-03-27T03:46:15-04:004900702http://forums.asp.net/p/1785413/4900702.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>This is not working in my case....have you tried it in any application...or its only a guess.</p> 2012-03-27T03:53:59-04:004900708http://forums.asp.net/p/1785413/4900708.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Yes I have and it works.</p> <p></p> <p>Here is the route I am using:</p> <pre class="prettyprint">routes.MapHttpRoute( name: &quot;SearchWithParameter&quot;, routeTemplate: &quot;api/{controller}/{action}/&quot;, defaults: new { action = &quot;post&quot; } );</pre> <p><br> <br> </p> 2012-03-27T03:57:18-04:004900711http://forums.asp.net/p/1785413/4900711.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>And what about <strong><span class="typ">PostOrder</span><span class="pun">(</span><span class="typ">Order</span><span class="pln"> order</span><span class="pun">)</span></strong> method ?</p> 2012-03-27T03:59:03-04:004900719http://forums.asp.net/p/1785413/4900719.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Use the following uri&nbsp;<span>api/orders/postorder or change the default action in the route to &quot;action = &quot;PostOrder&quot;&quot; and then use the uri: /api/orders/.</span></p> 2012-03-27T04:09:54-04:004901929http://forums.asp.net/p/1785413/4901929.aspx/1?Re+How+to+write+map+route+for+multiple+PostRe: How to write map/route for multiple Post <p>Did you get it working?</p> 2012-03-27T14:46:07-04:00