【发布时间】:2019-10-29 06:27:01
【问题描述】:
您好,需要一些帮助。 想要获取 webapi 方法返回并在调用者方法中使用它来传递给查看。我想实现 DRY 原则以将第二个 webapi 调用放在另一个方法中,并仅使用方法名称 + 参数在 foreach 循环中进行计数,但我担心如何从调用者方法获取 json 返回并传递它进入视图,只需使用方法名称 + 参数,如下所示。
或者只是,重构以下代码的最佳方法是什么?
// *** Calling First endpoint API to retrieve entire Employee List ***
HttpClient client = new HttpClient();
string APIdatas = null;
HttpResponseMessage response = await client.GetAsync("http://dummy.restapiexample.com/api/v1/employees");
if (response.IsSuccessStatusCode)
{
APIdatas = await response.Content.ReadAsStringAsync();
}
var employeeList = JsonConvert.DeserializeObject<List<EmployeeViewModel>>(APIdatas);
// *** Calling Second endpoint API to get Details for each Item per Id ***
// This below code needs to be refactorized in a single method
EmployeeDetailsModel stringJsonConv = null;
List<EmployeeDetailsModel> EmployeeDetailsList = new List<EmployeeDetailsModel>();
foreach (var item in employeeList.ToList())
{
Debug.WriteLine("ID TO PROCESS : " + item.Id);
HttpClient client2 = new HttpClient();
string APIdatas2 = null;
HttpResponseMessage response2 = await client2.GetAsync("http://dummy.restapiexample.com/api/v1/employee/" + item.Id);
if (response2.IsSuccessStatusCode)
{
APIdatas2 = await response2.Content.ReadAsStringAsync();
EmployeeDetailsModel EmployeeDetails = JsonConvert.DeserializeObject<EmployeeDetailsModel>(APIdatas2);
stringJsonConv = EmployeeDetails;
EmployeeDetailsList.Add(EmployeeDetails);
Debug.WriteLine("ID ALREADY PROCESSED : " + item.Id);
}
else
{
Debug.WriteLine("Error occurred, the status code is : {0}", response2.StatusCode);
}
}
//TempData["employeeList"] = EmployeeDetailsList;
return View(EmployeeDetailsList);
}
所以我想要实现的将如下所示
// * 调用第二个端点 API 以获取每个 Id 的每个项目的详细信息 * // 下面的代码需要在一个方法中重构
EmployeeDetailsModel stringJsonConv = null;
List<EmployeeDetailsModel> EmployeeDetailsList = new List<EmployeeDetailsModel>();
foreach (var item in employeeList.ToList())
{
Debug.WriteLine("ID TO PROCESS : " + item.Id);
getEmployeeDetail(int item.Id) **//Second api call will be inside **getEmployeeDetail** method and called inside first webapi call... but how to get the json return from the second method to be post in this view?(first method)**
}
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api