1

.net 核心。使用 RestSharp 106.5.4,这是有效的。Priorities 端点支持 aList<string> priorities作为查询参数。

string server = "http://localhost:11111";
var client = new RestClient(server);
string filter = "?priority=Low&priority=Medium"
var request = new RestRequest($"priorities{filter}", Method.GET);
var response = client.Execute<Priorities>(request);

当我查看响应对象 ResponseUri 属性时,它具有 http://localhost:11111/priorities ?priority=Low&priority=Medium

就像我所期望的那样。我将我的项目升级为使用 RestSharp 106.6.2,请求 URI 完全改变,并破坏了现有代码。

使用 RestSharp 106.6.2,它改变了我的 URI,我得到了这个 ResponseUri

http://localhost:11111/priorities优先级=低,中

这意味着我现在在请求的字符串数组中只得到一个元素,用逗号分隔,而不是像以前那样得到 2 个元素。

为什么会做出这种不被动的改变?这打破了我们的客户,因为现在它只看到一个元素传递到优先级列表中,即"Low,Medium",而不是数组中应有的两个元素。这会更改传递给调用的内容,并使调用无效,因为 Low,Medium 不是一个值,Low 是一个值,Medium 是一个值。

这是 restsharps 最新版本的缺陷,还是故意这样做的?

我知道我可以转动并使用参数对象来做到这一点,但直到最新的 restsharp 版本,我也没有,而且效果很好。

4

0 回答 0