docs: 更新文档中的 Bilibili 课程链接

- 将描述文档中的课程链接更新为相对路径
- 在 HTTP 客户端和服务文档中添加多个相关课程链接
- 更新 BilibiliCard 组件中的课程链接为相对路径
This commit is contained in:
若汝棋茗
2025-05-05 10:30:10 +08:00
parent eaf220ee1a
commit 3a53f3b91b
7 changed files with 71 additions and 4 deletions

View File

@@ -11,7 +11,7 @@ slug: /
n多课时系统讲解TCP/IP协议原理、Socket编程核心技术。涵盖开发环境搭建、插件机制、12种消息适配器实战含企业级聊天系统案例更新中。支持多端学习。适合零基础开发者及技术进阶人群。
立即报名:[课程链接](https://www.bilibili.com/cheese/play/ss489296905)
立即报名:[课程详情](./video.mdx)
特此公告。

View File

@@ -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的HttpClientHttps
```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")`。

View File

@@ -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()

View File

@@ -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即可。

View File

@@ -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)

View File

@@ -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>

View File

@@ -52,7 +52,7 @@
z-index: 1;
}
.pro-badge span {
.pro-badge a {
font-size: 12px;
padding: 5px 10px;
border: none;