同时使用url参数和查询字符串

时间:2018-03-04 18:14:11

标签: c# asp.net-web-api2 asp.net-web-api-routing

我的Products控制器中有两个操作方法。这是我的RouteConfig。

config.MapHttpAttributeRoutes();

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

这是两个行动及其工作网址。

[HttpGet]
//uri:http://localhost:49964/api/products/product?strKey=1
public IHttpActionResult Product(string strKey)

[HttpPost]
//uri:http://localhost:49964/api/products/product
public IHttpActionResult Product([FromBody] Product product)

但我也想使用以下网址进行GET。

http://localhost:49964/api/products/product/1

但是web api回应了,

The requested resource does not support http method 'GET'.

1 个答案:

答案 0 :(得分:1)

constructor(private _App : App ) { } @HostListener('scroll') onScroll(){ this._App.functionInComponent('someValue'); } 更改为strKey,或者如果要保留id,请执行相反的操作。

strKey

路由模板需要匹配映射按预期工作的操作。

config.Routes.MapHttpRoute(
     name: "DefaultApi",
     routeTemplate: "api/{controller}/{action}/{strKey}",
     defaults: new { strKey = RouteParameter.Optional }
);

但这意味着此路线中的所有操作都可选择使用//GET api/products/product/1 //GET api/products/product?strKey=1 [HttpGet] public IHttpActionResult Product(string strKey) 作为占位符