- 在前端项目页面组件对应的查询和保存方法中直接通过
HttpClient
对象调用现有的WebApi
。
// 表格列表页面组件
[Route("/bds/tests")]
public class TestList : BaseTablePage<TbTest>
{
// 注入Http客户端工厂
[Inject] private IHttpClientFactory ClientFactory { get; set; }
private HttpClient client;
// 初始化页面组件
protected override async Task OnPageInitAsync()
{
await base.OnPageInitAsync();
// 创建Http客户端对象
client = ClientFactory.CreateClient(nameof(TestList));
Table.OnQuery = QueryTestsAsync; // 设置查询方法
}
// 新增
public void New() => Table.NewForm(SaveTestAsync, new TbTest());
// 批量删除
public void DeleteM() => Table.DeleteM(DeleteTestsAsync);
// 编辑
public void Edit(TbTest row) => Table.EditForm(SaveTestAsync, row);
// 删除
public void Delete(TbTest row) => Table.Delete(DeleteTestsAsync, row);
// 调用现有查询WebApi
private async Task<PagingResult<TbTest>> QueryTestsAsync(PagingCriteria criteria)
{
// value对象为WebApi接收的对象,可以根据查询条件封装一下
var value = criteria;
var response = await client.PostAsJsonAsync("/queryUrl", value);
var result = response.Content.ReadFromJsonAsync<ApiPagingResult>();
// 根据WebApi返回的ApiPagingResult对象,封装成PagingResult
return new PagingResult<TbApply>(result);
}
// 调用现有删除WebApi
private async Task<Result> DeleteTestsAsync(List<TbTest> models)
{
// value对象为WebApi接收的对象,可以根据数据封装一下
var value = models;
var response = await client.PostAsJsonAsync("/deleteUrl", value);
var result = response.Content.ReadFromJsonAsync<ApiResult>();
// 根据WebApi返回的ApiResult对象,封装成Result
return result;
}
// 调用现有保存WebApi
private async Task<Result> SaveTestAsync(TbTest model)
{
// value对象为WebApi接收的对象,可以根据数据封装一下
var value = model;
var response = await client.PostAsJsonAsync("/saveUrl", value);
var result = response.Content.ReadFromJsonAsync<ApiResult>();
// 根据WebApi返回的ApiResult对象,封装成Result
return result;
}
}