web api中的重复参数

时间:2016-10-15 05:34:31

标签: asp.net-web-api

我在WebApi中遇到有关重复参数的问题。

此API控制器中的

http://localhost:xxxxx/api/getbook?UserId=7我有一个参数字符串UserId并且工作正常,但如果我这样做

http://localhost:xxxxx/api/getbook?UserId=7?UserId=7获得结果

那么如何防止API中的重复参数?

1 个答案:

答案 0 :(得分:0)

有几点需要注意:

  1. 会有一个&参数之间的字符,即http://localhost:xxxxx/api/getbook?UserId=7&UserId=7
  2. 如果您将模型带入控制器方法,默认情况下将使用同名的第一个参数
  3. 如果您在发现重复的参数名称时想要抛出一些错误,那么您可以执行以下操作:

    var queryParameters = Request.GetQueryNameValuePairs()
                    .GroupBy(k => k.Key)
                    .Where(g => g.Count() > 1)
                    .Select(q => q.Key)
                    .ToList();
    

    这将为您提供出现多次的List<string>个参数名称。

    如果您对参数名称和值组合是否重复感兴趣(如您的示例所示),那么只需GroupBy(k => k),您将获得一个KeyValuePair的列表。