问题详情
268 | 清风大侠
项目页面如何调用现有的Restful的WebApi?
  • 在前端项目页面组件对应的查询和保存方法中直接通过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;
    }
}
回复列表

暂无数据