繁体   English   中英

来自一个REST API的流作为对客户端Web API的响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM