# Soda.Http
**Repository Path**: DonPangPang/Soda.Http
## Basic Information
- **Project Name**: Soda.Http
- **Description**: HttpClient; Http Library for C#;基于HttpClient封装的一个Http请求库
- **Primary Language**: C#
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 2
- **Created**: 2023-04-07
- **Last Updated**: 2024-07-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: HttpClient, Http, Csharp, NetCore
## README
# Soda.Http
[](https://www.nuget.org/packages/Soda.Http/)
[](https://www.nuget.org/packages/Soda.Http/)
基于`HttpClient`封装的 Http 请求库。**如果有什么好想法,可以提 Issue 或者 Pr。**
* 2023/04/30 新增`Download/DownloadAsync`方法支持文件下载
## 用法
### 1 预载
预载配置并不是必须的,但是有助于我们进行一些通用基础设置,例如Headers、Accept、BaseUrl等等。
配置`BaseUrl`之后,可以直接使用`QSodaHttp.Uri()`代替`QSodaHttp.Url()`,直接填写接口即可。
在`AspNetCore`中:
```csharp
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")
};
});
```
较为通用的写法,程序构建时:
```csharp
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
```csharp
QSodaHttp.InitAuthentication("Bearer", "Values");
```
如果你是塞到 Header 里的这种做法
```csharp
QSodaHttp.AddHeader("X-Ca-Key", "Values");
```
### 3 Http 请求
#### 3.1 QSodaHttp
API 示例:
```csharp
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();
```
简单示例:
```csharp
// 配置BaseUrl
var services = new ServiceCollection();
services.AddSodaHttp(opts =>
{
opts.EnableCompress = false;
opts.BaseUrl = "http://localhost:5050/";
});
```
```csharp
var res = await QSodaHttp.Uri("/Test/Get").Params(new { Id = "123456" }).GetAsync