gpt4 book ai didi

c# - 在 ASP.NET Core 中有效地转发来自内部 HttpClient 调用的内容

转载 作者:太空狗 更新时间:2023-10-29 21:16:24 26 4
gpt4 key购买 nike

我正在从我的 ASP.NET Core 应用调用内部 HTTP 服务。来自此服务的响应消息可能非常大,所以我想尽可能高效地转发它们。如果可能的话,我只想将内容“映射”到 Controller 响应 - 或者换句话说,“将来自服务的流传输到从我的 Controller 流出的流”。

到目前为止,我的 Controller 方法只是调用服务:

[HttpPost]
public Post([FromBody]SearchQuery searchQuery)
{
var response = _searchClient.Search(searchQuery);
// ?
}

该服务由 HttpClient 实例调用。这里(作为示例)我只返回 HttpContent,但当然我可以返回完全读取和序列化的正文(我显然不想要):

public async Task<HttpContent> Search(SearchQuery searchQuery)
{
var content = new StringContent(TsearchQuery, Encoding.UTF8, "application/json");
var response = await _httpClient.PostAsync("_search", content);
return response.Content;
}

返回内容是否高效快速?我如何将 Controller 方法中的内容传递给响应? ASP.NET Core 是否在下面创建流?或者我应该在我的代码中显式处理流吗?

最佳答案

您可以只从操作返回 Stream,ASP.NET Core MVC 会高效地将它写入响应主体。

[HttpPost]
public async Task<Stream> Post([FromBody]SearchQuery searchQuery)
{
var response = await _searchClient.Search(searchQuery);
return await response.ReadAsStreamAsync();
}

关于c# - 在 ASP.NET Core 中有效地转发来自内部 HttpClient 调用的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43830943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com