如何使用参数从另一个服务调用一个服务并获得响应
How to call one service from another with parameter and get response
目前,我在不同端点有两个服务 运行。例如(这不是我的真实场景):
StudentService
CheckHomeWorkService
CheckHomeWorkService
可用于许多服务(例如 TeacherService, WorkerService
)。它有一个带有 CheckHomeWork
动作的控制器。它有一些参数:
HomeWorkNumber (int)
ProvidedSolution (string).
它将return成功或失败。
现在,在我的 StudentService 中,我有一个带有 SubmitHomeWork 操作的控制器。它需要使用 CHeckHomeWorkService 检查作业并将结果保存到数据库中。我该如何实施?
我正在使用 Ocelot Api GateWay
但它可以 'redirect' 到另一个服务,我需要将响应结果保存到数据库
在你的评论之后你说你有单独的 WEB API 服务
在这种情况下,您可以执行此服务来检索结果:
public async Task<List<HomeWorkModel>> CheckHomeWorkService(int
homeWorkNumber, string providedSolution)
{
using (var httpClient = new HttpClient())
{
using (var response = await
httpClient.GetAsync(Constants.ApiBaseUrl + "/CheckHomeWork?n=" +
homeWorkNumber + "&sol=" + providedSolution))
{
if (response.StatusCode ==
System.Net.HttpStatusCode.OK)
{
string apiResponse = await
response.Content.ReadAsStringAsync();
return
JsonConvert.DeserializeObject<List<HomeWorkModel>>(apiResponse);
}
else
{
return null;
}
}
}
}
public class HomeworkModel
{
Public bool Result {get; set;}
}
而 :
“Constants.ApiBaseUrl”是另一个 API
的基础 Url 的 http 地址
但在相同的情况下 API 您将使用旧的解决方案:
您可以在控制器构造函数中传递“CHeckHomeWorkService”(“依赖注入”)
并根据需要调用服务方法
如评论中所述,您可以使用HttpClient调用其他API。但是,如果您想要更安全和更高效的解决方案,您也可以使用 HttpClientFactory。
see this why to use it
and see the official docu
目前,我在不同端点有两个服务 运行。例如(这不是我的真实场景):
StudentService
CheckHomeWorkService
CheckHomeWorkService
可用于许多服务(例如 TeacherService, WorkerService
)。它有一个带有 CheckHomeWork
动作的控制器。它有一些参数:
HomeWorkNumber (int)
ProvidedSolution (string).
它将return成功或失败。
现在,在我的 StudentService 中,我有一个带有 SubmitHomeWork 操作的控制器。它需要使用 CHeckHomeWorkService 检查作业并将结果保存到数据库中。我该如何实施?
我正在使用 Ocelot Api GateWay
但它可以 'redirect' 到另一个服务,我需要将响应结果保存到数据库
在你的评论之后你说你有单独的 WEB API 服务
在这种情况下,您可以执行此服务来检索结果:
public async Task<List<HomeWorkModel>> CheckHomeWorkService(int
homeWorkNumber, string providedSolution)
{
using (var httpClient = new HttpClient())
{
using (var response = await
httpClient.GetAsync(Constants.ApiBaseUrl + "/CheckHomeWork?n=" +
homeWorkNumber + "&sol=" + providedSolution))
{
if (response.StatusCode ==
System.Net.HttpStatusCode.OK)
{
string apiResponse = await
response.Content.ReadAsStringAsync();
return
JsonConvert.DeserializeObject<List<HomeWorkModel>>(apiResponse);
}
else
{
return null;
}
}
}
}
public class HomeworkModel
{
Public bool Result {get; set;}
}
而 : “Constants.ApiBaseUrl”是另一个 API
的基础 Url 的 http 地址但在相同的情况下 API 您将使用旧的解决方案:
您可以在控制器构造函数中传递“CHeckHomeWorkService”(“依赖注入”) 并根据需要调用服务方法
如评论中所述,您可以使用HttpClient调用其他API。但是,如果您想要更安全和更高效的解决方案,您也可以使用 HttpClientFactory。 see this why to use it and see the official docu