微信公众号“CSharp编程大全"的文章《.NET超简单轻量级的HTTP请求组件Flurl》介绍了便捷构建URL及创建HTTP请求的.NET模块Flurl。与HttpClient相比,Flurl封装的更简捷易用,代码量更少。本文学习并测试基于Fluri调用WebApi的基本用法。
基于Fluri调用WebApi,需在Nuget包管理器中搜索并安装Flurl、Flurl.Http两个包。
Flurl.Http模块针对String类型定义了扩展函数,能够直接基于字符串发起Get请求,主要代码如下所示:
string url = @"http://localhost:5098/ECData/ECDatas";
string result = url.GetStringAsync().Result;//Flurl.Http定义的String扩展函数
JsonSerializerOptions options = new JsonSerializerOptions();
options.PropertyNameCaseInsensitive = true;
List<EnvironmentRecord> lstRecords = JsonSerializer.Deserialize<List<EnvironmentRecord>>(result, options);
Flrul调用基于POST请求的WebApi也简单,通过请求体传递参数的话直接将参数对象实例传递给PostJsonAsync函数即可,不需要额外处理序列化。主要代码如下所示:
string url = @"http://localhost:5098/ECData/DataTableListByPostPlus";
QueryCondition condition = new QueryCondition();
condition.page = 1;
condition.limit = 10;
string result = url.PostJsonAsync(condition).ReceiveString().Result;
JsonSerializerOptions options = new JsonSerializerOptions();
options.PropertyNameCaseInsensitive = true;
DataTableFuncResult lstRecords = JsonSerializer.Deserialize<DataTableFuncResult>(result, options);
参考文献:
[1]https://blog.csdn.net/xbhp1984/article/details/133165557
[2]https://flurl.dev/