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

问题描述 投票:2回答:1

我的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'.
c# asp.net-web-api2 asp.net-web-api-routing
1个回答
1
投票

如果你想保持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)

但这意味着此路线中的所有操作都可选择使用strKey作为占位符

© www.soinside.com 2019 - 2024. All rights reserved.