小编use*_*929的帖子

RestSharp - 异步请求回复模式

给出以下情况:

  1. 新作业通过 Post Request 发送到 API。此 API 返回 JobID 和 HTTP ResponseCode 202。

  2. 然后使用此 JobID 请求状态端点。如果端点在响应正文中设置了“已完成”属性,则可以继续执行第 3 步。

  3. 结果通过使用 JobID 的结果端点进行查询,并且可以进行处理。

我的问题是如何优雅而干净地解决这个问题。也许已经有现成的库可以实现这个功能?我找不到 RestSharp 或其他 HttpClient 的此类功能。当前的解决方案如下所示:

async Task<string> PostNewJob()
{
  var restClient = new RestClient("https://baseUrl/");
  var restRequest = new RestRequest("jobs");        
  //add headers
           
  var response = await restClient.ExecutePostTaskAsync(restRequest);
  string jobId = JsonConvert.DeserializeObject<string>(response.Content);
  return jobId;
}

async Task WaitTillJobIsReady(string jobId)
{
  string jobStatus = string.Empty;
  var request= new RestRequest(jobId) { Method = Method.GET };  
  do
  {
    if (!String.IsNullOrEmpty(jobStatus))
        Thread.Sleep(5000); //wait for next …
Run Code Online (Sandbox Code Playgroud)

c# rest asynchronous async-await microservices

3
推荐指数
1
解决办法
799
查看次数

标签 统计

async-await ×1

asynchronous ×1

c# ×1

microservices ×1

rest ×1