mirror of
https://github.com/RRQM/TouchSocket.git
synced 2025-12-20 10:26:43 +08:00
docs: 更新文档中的 Bilibili 课程链接
- 将描述文档中的课程链接更新为相对路径 - 在 HTTP 客户端和服务文档中添加多个相关课程链接 - 更新 BilibiliCard 组件中的课程链接为相对路径
This commit is contained in:
@@ -11,7 +11,7 @@ slug: /
|
||||
|
||||
n多课时系统讲解TCP/IP协议原理、Socket编程核心技术。涵盖开发环境搭建、插件机制、12种消息适配器实战,含企业级聊天系统案例(更新中)。支持多端学习。适合零基础开发者及技术进阶人群。
|
||||
|
||||
立即报名:[课程链接](https://www.bilibili.com/cheese/play/ss489296905)
|
||||
立即报名:[课程详情](./video.mdx)
|
||||
|
||||
|
||||
特此公告。
|
||||
|
||||
@@ -4,6 +4,7 @@ title: 创建HttpClient
|
||||
---
|
||||
|
||||
import CardLink from "@site/src/components/CardLink.js";
|
||||
import BilibiliCard from '@site/src/components/BilibiliCard.js';
|
||||
|
||||
### 定义
|
||||
|
||||
@@ -35,6 +36,8 @@ var client = new HttpClient();
|
||||
await client.ConnectAsync("http://localhost:7219");//先做连接
|
||||
```
|
||||
|
||||
<BilibiliCard title="创建HttpClient并完成请求" link="https://www.bilibili.com/cheese/play/ep1688271" isPro="true"/>
|
||||
|
||||
### 4.2 创建Ssl的HttpClient(Https)
|
||||
|
||||
```csharp showLineNumbers
|
||||
@@ -62,6 +65,8 @@ await client.SetupAsync(config);
|
||||
await client.ConnectAsync();//先做连接
|
||||
```
|
||||
|
||||
<BilibiliCard title="创建Https客户端" link="https://www.bilibili.com/cheese/play/ep1688272" isPro="true"/>
|
||||
|
||||
:::info 备注
|
||||
|
||||
实际上直接使用`ConnectAsync("https://localhost:7219")`的方式是合并了`SetupAsync`与`ConnectAsync`。所以当需要额外配置时,应当遵循所有配置都在`TouchSocketConfig`的约定。这样代码也比较简单明了。
|
||||
@@ -96,6 +101,8 @@ using (var stream=File.Create("1.txt"))
|
||||
}
|
||||
```
|
||||
|
||||
<BilibiliCard title="自定义Query和Header参数" link="https://www.bilibili.com/cheese/play/ep1688274" isPro="true"/>
|
||||
|
||||
### 5.4 构建自定义请求
|
||||
|
||||
```csharp showLineNumbers
|
||||
@@ -168,6 +175,8 @@ using (var stream=File.OpenRead("TouchSocket.dll"))
|
||||
}
|
||||
```
|
||||
|
||||
<BilibiliCard title="使用SSE实现类似AI问答效果" link="https://www.bilibili.com/cheese/play/ep1688275" isPro="true"/>
|
||||
|
||||
:::tip 提示
|
||||
|
||||
在构建自定义请求时,如果使用`AsGet`、`AsPost`等方法可以直接设置当前请求为`Get`、`Post`等。如果没有扩展方法可以使用时,可以使用`AsMethod`来实现,例如:`AsMethod("GET")`。
|
||||
|
||||
@@ -6,6 +6,7 @@ title: 创建HttpService
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import CardLink from "@site/src/components/CardLink.js";
|
||||
import BilibiliCard from '@site/src/components/BilibiliCard.js';
|
||||
|
||||
### 定义
|
||||
|
||||
@@ -17,11 +18,19 @@ import CardLink from "@site/src/components/CardLink.js";
|
||||
|
||||
**HttpService**是能够提供Http相关服务的基础类型。
|
||||
|
||||
<BilibiliCard title="轻量级Web开发框架序章" link="https://www.bilibili.com/cheese/play/ep1618488" isPro="true"/>
|
||||
|
||||
## 二、产品特点
|
||||
|
||||
- 支持HTTPS。
|
||||
- **多种数据接收模式**
|
||||
- **多地址监听**(可以一次性监听多个IP及端口)
|
||||
- **高性能**
|
||||
- **支持跨域**(CORS)
|
||||
- **支持AOT,且体积比AspNetCore小50%**
|
||||
|
||||
<BilibiliCard title="使用JMeter对Http组件进行性能测试" link="https://www.bilibili.com/cheese/play/ep1618489" isPro="true"/>
|
||||
<BilibiliCard title="Aot发布后与AspNetCore进行对比" link="https://www.bilibili.com/cheese/play/ep1618490" isPro="true"/>
|
||||
|
||||
## 三、产品应用场景
|
||||
|
||||
@@ -43,6 +52,7 @@ flowchart TD;
|
||||
|
||||
```
|
||||
|
||||
<BilibiliCard title="HttpContext的生命周期" link="https://www.bilibili.com/cheese/play/ep1688270" isPro="true"/>
|
||||
|
||||
## 五、支持插件接口
|
||||
|
||||
@@ -105,6 +115,8 @@ await service.StartAsync();
|
||||
|
||||
:::
|
||||
|
||||
<BilibiliCard title="创建Http服务器" link="https://www.bilibili.com/cheese/play/ep1618491" isPro="true"/>
|
||||
|
||||
## 七、获取请求
|
||||
|
||||
每个`HttpClient`连接建立时,系统除了会创建一个`HttpSessionClient`与之对应之外,还会创建一个`HttpContext`实例与之对应。
|
||||
@@ -117,12 +129,16 @@ var request = e.Context.Request;//http请求体
|
||||
var response = e.Context.Response;//http响应体
|
||||
```
|
||||
|
||||
<BilibiliCard title="Http方法解析与使用" link="https://www.bilibili.com/cheese/play/ep1618492" isPro="true"/>
|
||||
|
||||
### 7.1 获取Query参数
|
||||
|
||||
```csharp showLineNumbers
|
||||
string value = e.Context.Request.Query["key"];
|
||||
```
|
||||
|
||||
<BilibiliCard title="Query参数及用法" link="https://www.bilibili.com/cheese/play/ep1618493" isPro="true"/>
|
||||
|
||||
### 7.2 获取Header参数
|
||||
|
||||
```csharp showLineNumbers
|
||||
@@ -135,6 +151,8 @@ string value = e.Context.Request.Headers["key"];
|
||||
string value = e.Context.Request.Headers[HttpHeaders.Cookie];
|
||||
```
|
||||
|
||||
<BilibiliCard title="Header参数及用法" link="https://www.bilibili.com/cheese/play/ep1618495" isPro="true"/>
|
||||
|
||||
### 7.3 获取Form参数
|
||||
|
||||
```csharp showLineNumbers
|
||||
@@ -145,6 +163,9 @@ foreach (var item in multifileCollection)
|
||||
}
|
||||
```
|
||||
|
||||
<BilibiliCard title="Form参数及小文件传输" link="https://www.bilibili.com/cheese/play/ep1618496" isPro="true"/>
|
||||
<BilibiliCard title="Form-data与x-www-form-urlencod" link="https://www.bilibili.com/cheese/play/ep1618497" isPro="true"/>
|
||||
|
||||
### 7.4 获取字符串Body内容
|
||||
|
||||
```csharp showLineNumbers
|
||||
@@ -157,6 +178,9 @@ string bodyString = await e.Context.Request.GetBodyAsync();
|
||||
ReadOnlyMemory<byte> content = await e.Context.Request.GetContentAsync();
|
||||
```
|
||||
|
||||
<BilibiliCard title="接收并处理Json、Xml类Body数据" link="https://www.bilibili.com/cheese/play/ep1618500" isPro="true"/>
|
||||
<BilibiliCard title="接收Binary(小文件)类Body数据" link="https://www.bilibili.com/cheese/play/ep1618501" isPro="true"/>
|
||||
|
||||
### 7.6 持续读取Body内容
|
||||
|
||||
当数据太大时,可持续读取
|
||||
@@ -180,6 +204,8 @@ while (true)
|
||||
}
|
||||
```
|
||||
|
||||
<BilibiliCard title="接收超大文件字节流" link="https://www.bilibili.com/cheese/play/ep1618502" isPro="true"/>
|
||||
|
||||
### 7.7 获取Body持续写入Stream中
|
||||
|
||||
当数据太大时,可持续读取数据直接到流容器中。
|
||||
@@ -192,6 +218,9 @@ using (var stream = new MemoryStream())
|
||||
}
|
||||
```
|
||||
|
||||
<BilibiliCard title="接收超大文件时显示进度和速度(1)" link="https://www.bilibili.com/cheese/play/ep1618503" isPro="true"/>
|
||||
<BilibiliCard title="接收超大文件时显示进度和速度(2)" link="https://www.bilibili.com/cheese/play/ep1618504" isPro="true"/>
|
||||
|
||||
### 7.8 获取Body小文件
|
||||
|
||||
当Body内容为小文件集合时,可以使用该功能。
|
||||
@@ -222,6 +251,8 @@ await e.Context.Response
|
||||
.FromText("Ok")
|
||||
.AnswerAsync();
|
||||
```
|
||||
<BilibiliCard title="Form参数及小文件传输" link="https://www.bilibili.com/cheese/play/ep1618496" isPro="true"/>
|
||||
<BilibiliCard title="Form-data与x-www-form-urlencod" link="https://www.bilibili.com/cheese/play/ep1618497" isPro="true"/>
|
||||
|
||||
## 八、响应请求
|
||||
|
||||
@@ -257,6 +288,8 @@ e.Context.Response.SetContent("hello");
|
||||
e.Context.Response.FromJson("{}");
|
||||
```
|
||||
|
||||
<BilibiliCard title="从Json格式进行响应" link="https://www.bilibili.com/cheese/play/ep1618507" isPro="true"/>
|
||||
|
||||
### 8.4 开始响应内容
|
||||
|
||||
当通过上述步骤,完成了响应体的构建后,即可使用`AnswerAsync`直接进行响应。
|
||||
@@ -271,6 +304,8 @@ await e.Context.Response
|
||||
.AnswerAsync();
|
||||
```
|
||||
|
||||
<BilibiliCard title="从Binary进行响应" link="https://www.bilibili.com/cheese/play/ep1618509" isPro="true"/>
|
||||
|
||||
### 8.5 插件响应Get请求
|
||||
|
||||
```csharp showLineNumbers
|
||||
@@ -358,6 +393,10 @@ public class MyHttpPlug2 : PluginBase, IHttpPlugin
|
||||
|
||||
:::
|
||||
|
||||
<BilibiliCard title="响应小文件" link="https://www.bilibili.com/cheese/play/ep1618510" isPro="true"/>
|
||||
<BilibiliCard title="响应超大文件" link="https://www.bilibili.com/cheese/play/ep1618511" isPro="true"/>
|
||||
<BilibiliCard title="响应超大文件并显示进度和速度" link="https://www.bilibili.com/cheese/play/ep1618512" isPro="true"/>
|
||||
|
||||
|
||||
### 8.7 响应页面请求
|
||||
|
||||
@@ -418,6 +457,8 @@ public class MyHttpPlug3 : PluginBase, IHttpPlugin
|
||||
}
|
||||
```
|
||||
|
||||
<BilibiliCard title="从Xml、Html进行响应" link="https://www.bilibili.com/cheese/play/ep1618508" isPro="true"/>
|
||||
|
||||
## 九、进阶响应操作
|
||||
|
||||
### 9.1 响应有长度大数据
|
||||
@@ -463,10 +504,12 @@ for (int i = 0; i < 1024; i++)
|
||||
await response.CompleteChunkAsync();
|
||||
```
|
||||
|
||||
<BilibiliCard title="使用Chunk编码传输不定长数据" link="https://www.bilibili.com/cheese/play/ep1618513" isPro="true"/>
|
||||
|
||||
|
||||
## 九、创建加密Ssl的HttpsService
|
||||
|
||||
Https服务器,和http服务器几乎一样,只不过增加了一个Ssl的配置。
|
||||
Https服务器,和http服务器几乎一样,只不过增加了一个Ssl的配置。具体的Ssl配置,请参考:[TcpService Ssl](./tcpservice.mdx)。
|
||||
|
||||
```csharp showLineNumbers
|
||||
.SetServiceSslOption(new ServiceSslOption()
|
||||
|
||||
@@ -4,6 +4,7 @@ title: Swagger页面
|
||||
---
|
||||
|
||||
import Tag from "@site/src/components/Tag.js";
|
||||
import BilibiliCard from '@site/src/components/BilibiliCard.js';
|
||||
|
||||
### 定义
|
||||
|
||||
@@ -15,6 +16,8 @@ import Tag from "@site/src/components/Tag.js";
|
||||
|
||||
Swagger是一个用于生成、描述和调用RESTful接口的Web服务。通俗的来讲,Swagger就是将项目中所有(想要暴露的)接口展现在页面上,并且可以进行接口调用和测试的服务。
|
||||
|
||||
<BilibiliCard title="启用Swagger" link="https://www.bilibili.com/cheese/play/ep1688289" isPro="true"/>
|
||||
|
||||
## 二、使用
|
||||
|
||||
使用非常简单,先安装`TouchSocket.WebApi.Swagger`的包,然后直接UseSwagger即可。
|
||||
|
||||
@@ -4,6 +4,7 @@ title: 产品及架构介绍
|
||||
---
|
||||
|
||||
import CardLink from "@site/src/components/CardLink.js";
|
||||
import BilibiliCard from '@site/src/components/BilibiliCard.js';
|
||||
|
||||
### 定义
|
||||
|
||||
@@ -14,6 +15,8 @@ import CardLink from "@site/src/components/CardLink.js";
|
||||
|
||||
WebApi是**通用**的Rpc调用,与**编程语言无关**,与**操作系统无关**。其路由机制模仿AspNetCore,可实现很多路由机制。但是因为http兼容性错综复杂,所以目前TouchSocket的WebApi仅支持**GET**、**POST**函数。使用体验接近于AspNetCore。
|
||||
|
||||
<BilibiliCard title="为什么需要WebApi代替Http" link="https://www.bilibili.com/cheese/play/ep1688287" isPro="true"/>
|
||||
|
||||
## 二、特点
|
||||
|
||||
- 高性能,100个客户端,10w次调用,仅用时17s。
|
||||
@@ -75,6 +78,7 @@ Console.WriteLine("以下连接用于测试webApi");
|
||||
Console.WriteLine($"使用:http://127.0.0.1:7789/ApiServer/Sum?a=10&b=20");
|
||||
```
|
||||
|
||||
<BilibiliCard title="初步搭建WebApi服务" link="https://www.bilibili.com/cheese/play/ep1688288" isPro="true"/>
|
||||
|
||||
## 五、参数规则
|
||||
|
||||
@@ -127,6 +131,8 @@ public int Sum(int a, int b, MyClass myClass)
|
||||
}
|
||||
```
|
||||
|
||||
<BilibiliCard title="Get和Post参数默认来源讲解" link="https://www.bilibili.com/cheese/play/ep1688290" isPro="true"/>
|
||||
|
||||
### 5.3 特性规则
|
||||
|
||||
`WebApi`支持使用特性来定制参数规则。目前支持`[FromQuery]`、`[FromHeader]`、`[FromForm]`、`[FromBody]`等。
|
||||
@@ -173,6 +179,8 @@ public int SumFromBody([FromBody] MyClass myClass)
|
||||
}
|
||||
```
|
||||
|
||||
<BilibiliCard title="使用规则特性重新定义参数来源" link="https://www.bilibili.com/cheese/play/ep1688291" isPro="true"/>
|
||||
|
||||
:::tip 提示
|
||||
|
||||
当使用特性时,可以重新指定参数名,例如:
|
||||
@@ -224,6 +232,8 @@ public class ApiServer : RpcServer
|
||||
}
|
||||
```
|
||||
|
||||
<BilibiliCard title="路由匹配机制" link="https://www.bilibili.com/cheese/play/ep1688292" isPro="true"/>
|
||||
|
||||
:::tip 提示
|
||||
|
||||
`Router`特性不仅可以用于服务,也可以用于方法。而且可以多个使用。
|
||||
@@ -411,6 +421,8 @@ a.UseWebApi()
|
||||
var sum3 =await client.SumAsync(10,20);
|
||||
```
|
||||
|
||||
<BilibiliCard title="使用代码生成的方式调用WebApi" link="https://www.bilibili.com/cheese/play/ep1688293" isPro="true"/>
|
||||
|
||||
### 8.6 使用DispatchProxy代理调用
|
||||
|
||||
使用DispatchProxy代理调用,可以实现动态代理,详情请看[DispatchProxy代理生成](./rpcgenerateproxy.mdx)
|
||||
|
||||
@@ -25,7 +25,7 @@ const BilibiliCard = ({ title, link, isPro }) => {
|
||||
</div>
|
||||
{isPro && (
|
||||
<div className="pro-badge">
|
||||
<span>课程</span>
|
||||
<a href="/docs/current/video">课程</a>
|
||||
</div>
|
||||
)}
|
||||
</a>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.pro-badge span {
|
||||
.pro-badge a {
|
||||
font-size: 12px;
|
||||
padding: 5px 10px;
|
||||
border: none;
|
||||
|
||||
Reference in New Issue
Block a user