本文介绍了控制器可以支持带有可变字符串参数的路由吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想支持诸如/route/param1 /route/param1/param2 /route/param1/param2/param3 等等.

I want to support routes such as /route/param1, /route/param1/param2, /route/param1/param2/param3 and so on.

现在,我已经在控制器中为每种参数组合定义了一条路由:

For now I have define in my Controller one route per combination of parameters:

    [Route("{path1}")]
    public async Task<IActionResult> Route1(string path1)
    {
        return await ParsePath(new[] { path1 });
    }

    [Route("{path1}/{path2}")]
    public async Task<IActionResult> Route2(string path1, string path2)
    {
        return await ParsePath(new[] { path1, path2 });
    }

这有两个主要缺点:

  • 目前我有8个,所以我最多只能支持8个参数
  • 如果我想支持更多参数,则此代码不是很干燥

我宁愿使用带有这种签名的方法:

I would prefer to use a method with such signature:

    public async Task<IActionResult> RouteMultiple(params string[] paths)
    {
        return await ParsePath(queryString, paths);
    }

但这与 Route 属性兼容吗?

推荐答案

这是怎么回事:

  [Route("{path1?}/{path2?}/{path3?}/{path4?}")]
public async Task<IActionResult> RouteMultiple(string path1, string path2, ... and so on)
    {
        return await ParsePath(new[] { path1, path2, ... and so on });
    }

它可以在邮递员中使用.

It works in Postman.

这篇关于控制器可以支持带有可变字符串参数的路由吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 02:55