微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C#Blazor中使用HATEOAS的API并行GET

如何解决在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 举报,一经查实,本站将立刻删除。