как обращаться со сторонним API - PullRequest
0 голосов
/ 19 июня 2020

Я создал свой api, который внутренне вызывает сторонний api (для которого я буду ссылаться на их api). когда их api возвращает результат успеха (код состояния 200) и данные, я сохраняю их в базе данных, и myapi также возвращает код состояния 200. Но когда их api возвращает код состояния, отличный от 200 (например, statusCode 401, statusCode 403), как обработать это в myapi? плюс, в этом случае myapi должен возвращать код состояния 200 или должен возвращать тот же код состояния, который возвращает их API, если да. Как это сделать. возвращается в angular? как это сделать.

Я новичок в asp. net core web api, так что может кто-нибудь мне помочь.

вот мой api -

public async Task<IActionResult> AddStudent(student stud)
        {
                 Student Student = await _empRepo.AddOrUpdateStudent(stud);
                   return new OkObjectResult(student)
        }

В репо -

     public async Task<object> AddOrUpdateStudent(student stud)
      {
                var response= await testapi.getexternalstudentdata(student.Id);
            if(response is Student)
            {
              //save data in database
              // return the same object which saved in DB
            }
        else{
              // what should i do here to return whatever error i am getting to client in asp .net core 3.1
            }
      }

вызывающий сторонний api-

 public async Task<object> getexternalstudentdata(int StudId)
        {
            var relativePath = "url"
            var response = await SendAsync(HttpMethod.Get, relativePath);
            if (!response.IsSuccessStatusCode) return response;
            var responseString = await response.Content.ReadAsStringAsync();
            return JsonConvert.DeserializeObject<Student>(responseString);
        }

вот sendAsyn c Метод -

private async Task<HttpResponseMessage> SendAsync(HttpMethod method, string relativePath)
        {
            var request = new HttpRequestMessage(method, _httpClient.BaseAddress + relativePath);
           
            return await _httpClient.SendAsync(request);
        }
...