代码之家  ›  专栏  ›  技术社区  ›  Ayoub.A

.NET核心:get请求中可选参数的顺序

  •  0
  • Ayoub.A  · 技术社区  · 6 年前

    我有一个.net core rest api,请求我处理一个get请求,其中可选参数的路由模板应该如下 …/parameterName/parameterValue/... .

    到目前为止我试过的是这样的:

    [HttpGet("{manatoryParam1}/{manatoryParam2}/{manatoryParam3}/optionalParamName1/{optionalParamName1?}/optionalParamName2/{optionalParamName2?}")]
    public ActionResult Get(string manatoryParam1, string manatoryParam2, string optionalParamName1, int optionalParamName2)
    

    但我有两个问题:

    1. 如何转义第一个可选参数,因为当我发出以下请求时: url/value1/value2/optionalParamName1//optionalParamName2/value 我得到404错误
    2. 如果我有一个很长的可选参数列表,并且我只想要最后一个可选参数,那么我应该输入所有以前的可选参数,还是有其他方法只输入所需的参数呢?
    1 回复  |  直到 6 年前
        1
  •  0
  •   Robert Perry    6 年前

    这看起来是错误的,原因很多。处理此问题的最佳方法是创建一个包含要传递的属性的类,然后执行一些逻辑来提取服务器端的值。像这样:

    public class QueryParameters
    {
        public string manatoryParam1 {get; set;}
        public string manatoryParam2 {get; set;}
        public string optionalParamName1 {get; set;}
        public int optionalParamName2 {get; set;}
    }
    

    然后你的控制器会像这样:

    [HttpGet]
    public IActionResult Get(QueryParameters query)
    

    注意:您也应该返回iactionresult-它有助于单元测试;-)