【问题标题】:How to write map/route for multiple Post如何为多个帖子编写地图/路线
【发布时间】:2012-05-31 21:06:04
【问题描述】:

您好,我有一个需要多个 POST 的 API 控制器:

一个用于保存/更新:

public Order PostOrder(Order order)
{

}

还有一个搜索顺序

public IQueryable<Order> SearchWithParameter(SearchOrderParameter searchParameter)
{

}

我在 Global.asax 中添加了下面的 Route 方法

routes.MapHttpRoute(
            name: "SearchWithParameter",
            routeTemplate: "api/{controller}/{action}/{searchParameter}",
            defaults: new { action = "post" }
        );

在 Js 中我称之为:

 var SearchOrderParameter = new Object();
 SearchOrderParameter.OrderID = 1197;
 $.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);
    }
 });

但是每次这个方法调用PostOrder。请指导我,我缺少什么,以便它调用SearchWithParameter

【问题讨论】:

    标签: asp.net-web-api


    【解决方案1】:

    尝试使用这些路线...

      routes.MapHttpRoute(
                name: "ApiAction",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional },
                constraints: new { action = @"^[A-Za-z]" }
            );
    
            routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    

    【讨论】:

      【解决方案2】:

      默认情况下,HTTP 操作映射到以 HTTP 方法名称开头的 C# 函数。因此,HTTP POST 将被映射到 Post....() 方法,而不是 Search....() 方法。您可以添加一个HttpPost 属性以使 SearchWithParameter() 方法也适用于 post。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        • 2016-04-23
        • 2019-05-15
        • 1970-01-01
        • 1970-01-01
        • 2012-06-14
        相关资源
        最近更新 更多