写点什么

.net core 基于 HttpClient 实现的网络请求库

  • 2023-07-21
    福建
  • 本文字数:1454 字

    阅读完需:约 5 分钟

基于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>();
复制代码

简单示例:

// 配置BaseUrlvar 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>();
复制代码


发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
.net core基于HttpClient实现的网络请求库_.net core_互联网工科生_InfoQ写作社区