当前位置: 首页 > ai >正文

.NET超简单轻量级的HTTP请求组件Flurl

简介

Flurl是一个用于构建基于HTTP请求的C#代码的库。它的主要目的是简化和优雅地处理网络请求(只用很少的代码完成请求)。Flurl提供了一种简单的方法来构建GET、POST、PUT等类型的请求,以及处理响应和异常。它还提供了一些高级功能,如链式调用、缓存请求结果、自动重定向等。本文将介绍Flurl的GET、POST请求功能和序列化功能。

使用流程

1、创建一个APS.NET API站点,作为Flurl的请求源

在API里分别新建控制器,在控制器中建get、post两个方法。部分方法代码如下

 [HttpGet]public IEnumerable<string> Get(){return new string[] { "欢迎关注公众号", "DotNET开发跳槽" };}
//这是一个post请求,Test是一个类,分别包含了Id和name两个字段
[HttpPost("Posttest")]public string Posttest( Test value){return value.Name;}

2、新建一个控制台程序,作为Flurl请求的平台

首先用nuget安装Flurl,如果在vs里可以使用nuget安装,需要安装安装Flurl和Flurl.Http两个包。命令如下:

install-package Flurl;
install-package Flurl.Http;

然后新建两个方法,一个用于请求get,一个用于post。代码如下:

    public async Task<string> Get() {string url = "http://localhost:5232/api/Test";var response =await  url.GetAsync();string result = await response.GetStringAsync();return result;}public async Task<string> Post(){string url = "http://localhost:5232/api/Test/Posttest";var test = new  { Id = 1, Name = "关注公众号dotnet开发跳槽" };var response = await url.PostJsonAsync(test);//将对象序列化为json 并传参数string result = await response.GetStringAsync(); return result;}}

从上面代码可以看出,get使用Flurl就两行代码返回值,而post加上请求参数也才三行代码。是不是很简洁。但是注意的是使用post传json的时候千万别序列化对象,因为它已经帮你序列化为JSON字符串了。

上面的例子效果分别如下:

图片

图片

Flurl还自带序列化和反序列化功能。demo代码如下:

var json = await url.GetJsonAsync();
//将JSON反序列化为对象var products = json.DeserializeJson<List<Product>>();//将对象序列化为json 并传参数
var response = await url.PostJsonAsync(test);

简单吧,只需要几行代码解决序列化问题,省去了引用或者安装json包了。

上面只列出了Flurl的部分功能,其它功能请参考官网:

https://flurl.dev

结语

本文讲述了Flurl的GET、POST请求功能和序列化功能,适合初学者阅读和学习,实际项目使用需要根据情况参考官网使用。Flurl 适用于需要执行HTTP请求的.NET应用程序。它可以用于构建 RESTful API 客户端、Web 爬虫、数据抓取工具等。希望本文对你的项目有所收获,同时欢迎留言或者吐槽本文。

推荐阅读

1、在.NET Core使用 HttpClient 的正确方式

2、.NET几种HTTP请求组件你用过几种?

来源公众号:DotNet开发跳槽 
http://www.xdnf.cn/news/11369.html

相关文章:

  • 51使用LCD1602液晶显示(复习总结)
  • window.setInterval的用法与实例
  • Unix时间戳和北京时间的相互转换
  • 网络安全--安全攻防概述
  • VNN简介很好的网络软件工具
  • 【Linux 裸机篇(一)】ARM Cortex-A 架构基础、汇编基础
  • x86-64、amd64、arm、aarch64 都是些什么?
  • 设计模式——Proxy静态代理与动态代理
  • HVS人眼视觉系统(Human Visual System)
  • MATLAB教程四:MATLAB绘图
  • NFS-Ganesha框架学习
  • PHP从零开始--基础篇
  • delphi开发小白盒接口实现扫码控制
  • 前端需要知道的JSON.stringify的正确用法
  • 【转】 ID,ClientID和UniqueID
  • 对一个vbs脚本病毒的病毒原理分析
  • Apche Kafka 的生与死 – failover 机制详解
  • 【51单片机】矩阵键盘
  • 创新管理:臭鼬工厂的故事
  • Directsound和Waveout
  • 什么是卷积?
  • 详解DOM对象中clientWidth、offsetWidth等属性
  • 关于AlertDialog 的一些用法
  • 常用正则表达式合集,这一篇就够了!!(含完整案例,建议收藏)
  • PC硬件——主板
  • 永恒之蓝(ms17-010)简介与复现
  • BNF 介绍
  • 国外有哪些安全论坛或者黑客论坛,或者导航类黑客学习网站?
  • 在win10下的VTK安装 VS2017+VTK+ITK+camke+QT的逐步安装(保姆级教程,逐步教程)
  • 贪心算法(greedy algorithm,又称贪婪算法)详解(附例题)