Web 中具有多个参数的属性路由 API 2
Attributed Routing with multiple parameters in Web API 2
我正在尝试使用 Web 进行属性路由 API 2. 我已经定义了一个路由前缀,并且有两种方法。第一个有效,但第二个失败
[RoutePrefix("api/VolumeCap")]
public class VolumeCapController : ApiController
{
[Route("{id:int}")]
public IEnumerable<CustomType> Get(int id)
{
}
[Route("{id:int}/{parameter1:alpha}")]
public CustomType Get(int id, string parameter1)
{
}
}
http://localhost/MyWebAPI/api/VolumeCap/610023 //This works
http://localhost/MyWebAPI/api/VolumeCap/610023?parameter1=SomeValue
//This does not work
我收到以下错误
The requested resource does not support http method
'GET'.
我似乎遗漏了一些明显的东西,但我无法弄清楚。
如果您使用
定义路线
[RoutePrefix("api/VolumeCap")]
和
[Route("{id:int}/{parameter1:alpha}")]
您的 url 必须如下所示:
api/VolumeCap/[IdValue]/[Parameter1Value]
而不是这样:
api/VolumeCap/[IdValue]?parameter1=[Parameter1Value]
您的 url 将匹配具有此属性 [Route("{id:int}")]
但具有附加参数 parameter1
的方法,即
[Route("{id:int}")]
public IEnumerable<CustomType> Get(int id, string parameter1)
这是因为 select 操作的第一步是将路由与提供的 URL 匹配,其中不包括查询字符串,而仅包括 url段(由 /
分隔)。路由匹配后,从查询字符串中读取附加参数,但仅在路由匹配之后。
我正在尝试使用 Web 进行属性路由 API 2. 我已经定义了一个路由前缀,并且有两种方法。第一个有效,但第二个失败
[RoutePrefix("api/VolumeCap")]
public class VolumeCapController : ApiController
{
[Route("{id:int}")]
public IEnumerable<CustomType> Get(int id)
{
}
[Route("{id:int}/{parameter1:alpha}")]
public CustomType Get(int id, string parameter1)
{
}
}
http://localhost/MyWebAPI/api/VolumeCap/610023 //This works http://localhost/MyWebAPI/api/VolumeCap/610023?parameter1=SomeValue //This does not work
我收到以下错误
The requested resource does not support http method 'GET'.
我似乎遗漏了一些明显的东西,但我无法弄清楚。
如果您使用
定义路线[RoutePrefix("api/VolumeCap")]
和
[Route("{id:int}/{parameter1:alpha}")]
您的 url 必须如下所示:
api/VolumeCap/[IdValue]/[Parameter1Value]
而不是这样:
api/VolumeCap/[IdValue]?parameter1=[Parameter1Value]
您的 url 将匹配具有此属性 [Route("{id:int}")]
但具有附加参数 parameter1
的方法,即
[Route("{id:int}")]
public IEnumerable<CustomType> Get(int id, string parameter1)
这是因为 select 操作的第一步是将路由与提供的 URL 匹配,其中不包括查询字符串,而仅包括 url段(由 /
分隔)。路由匹配后,从查询字符串中读取附加参数,但仅在路由匹配之后。