同时使用 url 参数和查询字符串
use both url parameter and query string
我的产品控制器中有两个操作方法。这是我的路由配置。
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这是两个动作及其工作 urls。
[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)
不过我也想用下面的url来GET。
http://localhost:49964/api/products/product/1
但是网络 api 响应为,
The requested resource does not support http method 'GET'.
将 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
作为占位符
我的产品控制器中有两个操作方法。这是我的路由配置。
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这是两个动作及其工作 urls。
[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)
不过我也想用下面的url来GET。
http://localhost:49964/api/products/product/1
但是网络 api 响应为,
The requested resource does not support http method 'GET'.
将 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
作为占位符