Soda.Http

基于HttpClient封装的 Http 请求库。如果有什么好想法,可以提 Issue 或者 Pr。,如果想要使用,直接在nuget搜索Soda.Http即可。

Github项目地址:Soda.Http

用法

1 预载

预载配置并不是必须的,但是有助于我们进行一些通用基础设置,例如Headers、Accept、BaseUrl等等。

配置BaseUrl之后,可以直接使用QSodaHttp.Uri()代替QSodaHttp.Url(),直接填写接口即可。

AspNetCore中:

services.AddSodaHttp(opts =>
{
opts.BaseUrl = "http://localhost:8080/";
opts.Accept = new[]
{
"application/json",
"text/plain",
"*/*"
};
opts.EnableCompress = false;
opts.Headers = new[]{
("X-Ca-Test", "key")
};
});

较为通用的写法,程序构建时:

QSodaHttp.AddSodaHttp(opts =>
{
opts.BaseUrl = "http://localhost:8080/";
opts.Accept = new[]
{
"application/json",
"text/plain",
"*/*"
};
opts.EnableCompress = false;
opts.Headers = new[]{
("X-Ca-Test", "key")
};
})

2 全局配置 Authentication

有时需要全局配置 Authentication,如果在代码中请求中独立配置了 Authentication 则会覆盖全局 Authentication

QSodaHttp.InitAuthentication("Bearer", "Values");

如果你是塞到 Header 里的这种做法

QSodaHttp.AddHeader("X-Ca-Key", "Values");

3 Http 请求

3.1 QSodaHttp

API 示例:

var result = await QSodaHttp.Url("https://www.baidu.com/")
.Header("X-Ca-Key", "XXX")
.Authentication("Bearer", "XXX")
.Params(new { Id = "123456" })
.Body(new { })
// .Form(...)
// .File(...)
.PostAsync<string>();

简单示例:

// 配置BaseUrl
var services = new ServiceCollection();
services.AddSodaHttp(opts =>
{
opts.EnableCompress = false;
opts.BaseUrl = "http://localhost:5050/";
});
var res = await QSodaHttp.Uri("/Test/Get").Params(new { Id = "123456" }).GetAsync<object>();
var res = await QSodaHttp.Uri("/Test/TestGetResult").Params(new { Id = "123456", Ids = new[] { "123", "456" } }).GetAsync<object>();
var res = await QSodaHttp.Uri("/Test/Post").Body(new { Id = "123456", Ids = new[] { "123", "456" } }).PostAsync<object>();
var res = await QSodaHttp.Uri("/Test/PostResult")
.Params(new { Id = "123456", Ids = new[] { "123", "456" } })
.Body(new { Id = "123456", Ids = new[] { "123", "456" } })
.PostAsync<object>();
var res = await QSodaHttp.Uri("/Test/Delete").Params(new { Id = "123456" }).DeleteAsync<object>();
var res = await QSodaHttp.Uri("/Test/DeleteResult").Params(new { Id = "123456", Ids = new[] { "123", "456" } }).DeleteAsync<object>();
var res = await QSodaHttp.Uri("/Test/Put").Params(new { Id = "123456" }).PutAsync<object>();
var res = await QSodaHttp.Uri("/Test/PutResult")
.Body(new { Id = "123456", Ids = new[] { "123", "456" } })
.PutAsync<object>();
var res = await QSodaHttp.Uri("Patch").Params(new { Id = "123456" }).PatchAsync<object>();
var res = await QSodaHttp.Uri("PatchResult")
.Body(new { Id = "123456", Ids = new[] { "123", "456" } })
.PatchAsync<object>();

.net core基于HttpClient实现的网络请求库的更多相关文章

  1. 基于Android Volley的网络请求工具

    基于Android Volley的网络请求工具. 一.说明 AndroidVolley,Android Volley核心库及扩展工程.AndroidVolleySample,网络请求工具示例工程.Re ...

  2. 浅论Android网络请求库——android-async-http

    在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Insta ...

  3. [转]Android各大网络请求库的比较及实战

    自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ...

  4. Android之网络请求库

    自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ...

  5. Android进阶笔记01:Android 网络请求库的比较及实战(一)

    在实际开发中,有的时候需要频繁的网络请求,而网络请求的方式很多,最常见的也就那么几个.本篇文章对常见的网络请求库进行一个总结. 一.使用HttpUrlConnection: 1. HttpUrlCon ...

  6. Android 各大网络请求库的比较及实战

    自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ...

  7. Android进阶笔记02:Android 网络请求库的比较及实战(二)

    一.Volley        既然在android2.2之后不建议使用HttpClient,那么有没有一个库是android2.2及以下版本使用HttpClient,而android2.3及以上版本 ...

  8. 造轮子 | 怎样设计一个面向协议的 iOS 网络请求库

    近期开源了一个面向协议设计的网络请求库 MBNetwork,基于 Alamofire 和 ObjectMapper 实现,目的是简化业务层的网络请求操作. 须要干些啥 对于大部分 App 而言,业务层 ...

  9. swift中第三方网络请求库Alamofire的安装与使用

    swift中第三方网络请求库Alamofire的安装与使用 Alamofire是swift中一个比较流行的网络请求库:https://github.com/Alamofire/Alamofire.下面 ...

  10. 自己动手写一个iOS 网络请求库的三部曲[转]

    代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/BuildYourHTTPRequestLibrary 开源项目:Pitaya,适合大 ...

随机推荐

  1. 后台传回来的Map类型的数据在前台中的JS代码中使用

    Map<String, String> projectTypeCodeMap = SysCodeUtils.getSysCodeMap(request, CommonFields.XT_P ...

  2. sscms自己从数据库筛选内容

    where条件除了SiteId和ChannelId之外, 还需要加上IsChecked='True',而不是CheckedLevel

  3. PyCharm 取消单词拼写检查

    在使用PyCharm的时候,有时候变量不符合规范比如"old_pwd"写成了"oldpwd" ,在变量下就会出现波浪线,比较烦人 去除这个拼写检查的地方是:Fi ...

  4. Jmeter-接口测试(二)

    鉴权码获取: 1.通过接口获取 appid secret  (第三方用户唯一凭证, 第三方用户唯一凭证秘钥) 2.登录之后自动生成 username,password 一.jmeter 接口关联 1. ...

  5. 机制设计原理与应用(三)Screening

    目录 3 Screening 3.1 为单个不可分割的项目定价 3.1.1 对\(\theta\)的假设 3.1.2 问题描述 3.1.3 特性 3.2 为无限可分的项目定价 3.2.1 对\(\th ...

  6. python3GUI--天气预报小工具By:PyQt5(附源码)

    @ 目录 一.准备工作 二.预览 1.启动 2.添加城市 三.设计流程 1.UI设计(草图) 2.UI设计(QT设计师) 3.解释 四.源代码 五.总结 之前用tk写过一款python3GUI--天气 ...

  7. java 操作 zookeeper

    pom.xml<dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</a ...

  8. json中有List集合时,转换List集合内元素的时间格式

    1 public class User implements Serializable { 2 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ...

  9. C语言初级阶段4——数组3——字符数组

    C语言初级阶段4--数组3--字符数组 字符数组的定义:储存字符类型数据的集合 1.注意:如果用字符串给字符数组初始化,那么不需要{},但是要有"". 2.%s :用来输出字符串的 ...

  10. 如何简单使用Git

    Git基本功能 Git基本功能 在具体介绍Git能做什么之前,先来了解下Git里的四个角色: workspace: 本地的工作空间. index:缓存区域,临时保存本地改动. local reposi ...