Asp.net web api2 将API从类似REST的路由转换为命名参数
我已经创建了一个API来查找这样的参数Asp.net web api2 将API从类似REST的路由转换为命名参数,asp.net-web-api2,restful-url,attributerouting,Asp.net Web Api2,Restful Url,Attributerouting,我已经创建了一个API来查找这样的参数 http://server/api/contollerName/param1/param2/param3 对于此模式,我使用了以下method属性: [Route("api/myController/{param1}/{param2}/{param3}")] [HttpGet] public IHttpActionResult myMethod(int param1, int param2, int param3) { // Method implem
http://server/api/contollerName/param1/param2/param3
对于此模式,我使用了以下method属性:
[Route("api/myController/{param1}/{param2}/{param3}")]
[HttpGet]
public IHttpActionResult myMethod(int param1, int param2, int param3)
{
// Method implementation goes here
}
然而,将要使用API的人(UI开发人员)更希望API设置如下
http://server/api/controllerName?param1=value¶m2=value¶m3=value
我认为我需要做的就是删除方法的属性,Web Api路由引擎将根据参数名称选择正确的方法,这一想法正确吗?有没有一种方法可以像最初那样修改路由以显式定义方法和参数?我喜欢指定路由,这样就不会对将要执行的方法产生歧义。您认为需要做的就是删除方法的属性,这是正确的。您将无法定义该格式的管线模板
http://server/api/controllerName?param1=value¶m2=value¶m3=value
因为ASP.Net Web API2路由模板不允许在路由模板中包含“?”字符。你能到达的最近的地方是
http://server/api/controllerName/MethodName/param1={param1},param2={param2}
另外请注意,如果您在路由模板中有-,则当您请求命中该API时,ASP.NET将抛出一个检测到危险的Request.Path值的错误。但是,通过引用此可以解决此问题,您认为只需删除方法的属性即可。您将无法定义该格式的管线模板
http://server/api/controllerName?param1=value¶m2=value¶m3=value
因为ASP.Net Web API2路由模板不允许在路由模板中包含“?”字符。你能到达的最近的地方是
http://server/api/controllerName/MethodName/param1={param1},param2={param2}
另外请注意,如果您在路由模板中有-,则当您请求命中该API时,ASP.NET将抛出一个检测到危险的Request.Path值的错误。但这可以通过参考此解决