![](/img/trans.png)
[英]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.