如何解决在C#Blazor中使用HATEOAS的API并行GET
我正在使用实现HATEOAS的API(这不是我自己的,因此我无法更改任何内容)。我通过GET收到的JSON文件如下所示:
{
"_links": {
"_children": {
"child1": {
"href": "/document/child1"
},"child2": {
"href": "/document/child2"
},...
这意味着,首先,我调用根组件,从中获得所有子项的链接,然后再调用每个子项的URL来获取其子项,依此类推。
这并不是真正有效的方法,因为有时有数百个孩子,而一个请求大约需要250毫秒。目前,我使用一个递归函数来进行这样的调用(Blazor WebAssembly):
response = await _httpClient.GetAsync(rootUrl + child.HRef);
我正在使用System.Net.Http.HttpClient。现在我想我可以并行进行所有这些调用以节省时间。我找到了一些解决方案,当您已经知道URL时如何发出并行请求(例如http://www.michalbialecki.com/2018/04/19/how-to-send-many-requests-in-parallel-in-asp-net-core/),但是如果每次调用后都获得URL,则没有很好的解决方案。
我想到了为根组件的每个子代创建一个线程,然后为子代的每个子代创建线程,直到达到最大并行调用的次数。
我不确定如何实现这样的功能,如果有人有答案,我会很高兴。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。