1

我正在创建 web api,如下所示:

public class ProductsController : ApiController
{
  //Get Products Prices 

    public string GetProductPrices(string ProductName)
    {
      //some method definition
    }
 }

我已经定义了 webapiconfig 如下。

 config.Routes.MapHttpRoute(
        name: "Default",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { controller = "Products", action = "ProductVariations", id = RouteParameter.Optional });

当我尝试从 url 调用 web api 时,它返回错误 400。

我将上述方法调用如下:

1) http://site.com/api/Products/apple-ipod-touch/GetProductPrices

2) http://site.com/api/Products/GetProductPrices/apple-ipod-touch

请纠正我的错误。

4

1 回答 1

0

阅读这篇文章作为开始。

您必须使用 来创建路线ProductName,或者必须使用Id参数输入来创建控制器名称。您不能将ProductName路由映射到Id输入参数。

PS:第一种请求api的方式无效。您有一个路由,其中​​控制器名称在 url 中具有第二个位置,它绝对不能位于第三个,它不会与预定义的路由匹配。

如果修改路线:

 config.Routes.MapHttpRoute(
    name: "Default",
    routeTemplate: "api/{controller}/{action}/{ProductName}",
    defaults: new { controller = "Products", action = "ProductVariations", ProductName = RouteParameter.Optional });

但是最好在您的 webapi url 中使用 id,这种情况下的 url 会更整洁。

于 2013-10-17T06:31:28.313 回答