我正在尝试一种构建后端rest api的最佳方法。我有以下要求:
- 客户端发出发布请求以添加包含 ID 和元信息的资源
- 在我将此资源添加到数据库之前,我需要使用提供的 ID 向第三方 API 发出 GET 请求以获取相关数据。
- 然后将原始资源及其相关数据保存到数据库中
目前在方法Repository
内部AddAsync
,在将资源持久化到数据库之前,我调用第三方 API 以根据 ID 获取有关资源的详细信息,然后SaveChangesAsync
在填充了其余属性的模型上执行通过 GET 请求。
然而,这感觉不对,因为我POST
从客户端发出请求,然后GET
在后端服务器上发出请求。有没有更好的方法来解决这个问题?
IAccountRepository:
public async Task<SupervisorResult> AddAsync(Account newAccount, CancellationToken ct = default)
{
// GetAccountDataAsync fetches order data that I need to save whenever new Account is added
SupervisorResult result = await GetAccountDataAsync(newAccount, ct);
if(result.Succeeded == false)
{
_logger.Here().Debug("Failed to get new account data.");
return result;
}
Account freshAccount = (Account)result.Value;
_dbContext.Accounts.Add(freshAccount);
await _dbContext.SaveChangesAsync(ct);
result.Succeeded = true;
result.Value = freshAccount;
return result;
}