繁体   English   中英

web api中的路由属性忽略部分uri

[英]Routing attribute in web api ignore part of uri

我有一个控制器

public class SimulatorController : ApiController
{
    private SimulatorService _simulatorService;

    public SimulatorController()
    {
        _simulatorService = new SimulatorService();
    }

    [HttpGet]
    [Route("spiceusers")]

    public async Task<IHttpActionResult> GetConsumerProductsAsync()
    {
        var consumerProductsList = await _simulatorService.GetConsumerProductsAsync();
        return Ok(consumerProductsList);
    }

} 

我有 uri

http://comm-rpp-emulator.com/spiceusers/9656796/devicesfuse?includeComponents=true&groupByParentDevice=true&includeChildren=true&limit=50&page=1

我需要处理我的方法

http://comm-rpp-emulator.com/spiceusers

并忽略uri的其他部分?

您可以使用诸如{*segment}类的包罗万象的路由参数来捕获 URL 路径的剩余部分。

这里的假设是属性路由已经启用。

public static class WebApiConfig {
    public static void Register(HttpConfiguration config) {
        // Web API routes
        config.MapHttpAttributeRoutes();

        // Other Web API configuration not shown.
    }
}

发布示例中的 URL 可以通过使用 catch-all 路由参数与操作匹配,该参数将捕获与模板匹配的 URL 路径的剩余部分

//GET spiceusers/{anything here}
[HttpGet]
[Route("~/spiceusers/{*url}")]
public async Task<IHttpActionResult> GetConsumerProductsAsync() { ... }

现在,对/spiceusers任何调用都/spiceusers映射到上述操作。

请注意,这还包括spiceusers模板下的所有子调用,前提是这是预期的。

另请注意,如果此 Web api 与默认 MVC 一起使用,则路径与默认路由发生冲突。 但是考虑到 wep api 路由往往在 MVC 路由之前注册,这可能不是什么大问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM