[英]Is there a faster way to stream objects from S3 over Web Api to my Angular client instead of using their response stream?
[英]Stream from one REST API as response to client Web API
我有一个供应商休息的API,我们可以获取大量的json数据。 我们无法让客户直接访问此API,因此我们要做的是创建我们自己的REST API(C#WebAPI),该API接收客户客户的请求。
然后,我们的Web API会处理数据,并向供应商的其他API发出请求以及所需的凭据。
我们不对供应商API返回的数据进行任何操作。
我想返回从供应商的REST API返回的相同流,但是我不想等到流关闭。 一旦我们开始从供应商REST API调用中接收数据,我希望将相同的数据从我们的REST API返回给客户端调用者。
这将提供巨大的性能优势,并大大降低扩展成本。
客户端------调用我们的REST API-> {OUR REST API} -------调用供应商REST API ------> {供应商的REST API}
我们如何在C#中完成类似的工作?
[HttpGet]
public async Task<IActionResult> Get([FromQuery]SearchQuery queryParam)
{
string apiKey = _configuration.GetValue<string>("VendorAPIKey");
string restUrl = "https://vendorresturl.com/api/search?kajhfjhsdf";
var hclient = new HttpClient();
hclient.DefaultRequestHeaders.Add("api-key", apiKey);
var responseMessage = await hclient.GetAsync(restUrl.ToString());
var c = new ContentResult();
c.ContentType = "application/json";
c.Content = await responseMessage.Content.ReadAsStringAsync();
return c;
}
我建议您在代码中更改两件事:
1)只需获取一次该API,然后将其投入使用,并将此Key持久化为一个单例变量。 这样,控制器将首次执行公正请求,此后,键值将在存储的单例变量中可用。
2)使用事件回调模式,使您的流程完全异步,在过程结束后,Webhook可以向该过程提供异步回调,以向该Webhook发送过程的结果。
阅读这些文章以帮助您:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.