簡體   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