我正在寻找一些建议,任何反馈都很好。
我正在制作的应用程序概述是天气检查器。用户将邮政编码输入到视图中。然后,该邮政编码将用于从API获取经度和纬度,然后将结果输入另一个API,该API将返回天气信息。
我将使用HttpClient类实现这一点。
我是否正确地说API调用应该在模型内而不是在控制器内进行?
答案 0 :(得分:0)
我是否正确地说API调用应该在模型内而不是在控制器内进行?
您的推理是正确的。您不应在控制器中进行API调用-因为此逻辑与视图无关。
但是,正如其他评论所建议的那样,我会将呼叫放置在以下服务中:
public class ApiCallsService : IApiCallsService
{
private readonly DbContext _context;
public ApiCallsService(DbContext context) {
_context = context;
}
public async Task<string> CallApi(string data)
{
//... call the API and return a string with the results
}
}
您的界面将如下所示:
public interface IApiCallsService
{
Task<string> CallApi(string data);
}
然后您需要将服务添加到Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddTransient<IApiCallsService, ApiCallsService>();
}
然后,从您的控制器调用api:
namespace WeatherApp.Web.Controllers
{
public class WeatherController : Controller
{
private readonly IApiCallsService _apiService;
public WeatherController(IApiCallsService apiService)
{
_apiService = apiService;
}
public async Task<IActionResult> Index()
{
// Call the API
string result = await _apiService.CallApi(data);
}
}
}