docs: 完善文档

This commit is contained in:
Fu Diwei
2024-02-07 11:22:05 +08:00
committed by RHQYZ
parent 8cf032f25a
commit c774af7466
49 changed files with 181 additions and 171 deletions

View File

@@ -1,10 +1,10 @@
## 如何在 ASP.NET Core 中`IHttpClientFactory` 集成?
## 如何与 `IHttpClientFactory` 集成?
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient FAQ如何在 ASP.NET Core 中与 IHttpClientFactory 集成?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/FAQ_IHttpClientFactory.md)
> [《SKIT.FlurlHttpClient FAQ如何与 IHttpClientFactory 集成?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---

View File

@@ -4,7 +4,7 @@
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient FAQ如何使用拦截器》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/FAQ_Interceptor.md)
> [《SKIT.FlurlHttpClient FAQ如何使用拦截器》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---

View File

@@ -4,7 +4,7 @@
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient FAQ如何指定 JSON 序列化器?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/FAQ_JsonSerializer.md)
> [《SKIT.FlurlHttpClient FAQ如何指定 JSON 序列化器?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---

View File

@@ -6,12 +6,12 @@
```csharp
/* 如果是 JSON 格式的通知内容,以 wxa_media_check 事件为例 */
string callbackJson = "{ ... }";
var callbackModel = client.DeserializeEventFromJson<Events.WxaMediaCheckEvent>(callbackJson);
string webhookJson = "{ ... }";
var webhookModel = client.DeserializeEventFromJson<Events.WxaMediaCheckEvent>(webhookJson);
/* 如果是 XML 格式的通知内容,以 text 事件为例 */
string callbackXml = "<xml> ... </xml>";
var callbackModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(callbackXml);
string webhookXml = "<xml> ... </xml>";
var webhookModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(webhookXml);
```
完整的回调通知模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.Wechat.Api/Events_ 目录。
@@ -27,21 +27,27 @@ var callbackModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(call
一种是利用 `System.Xml.Linq`
```csharp
XDocument xDoc = XDocument.Parse(callbackXml);
string msgType = xDoc.Root?.Element("MsgType")?.Value?.ToUpper();
string msgType = XDocument.Parse(webhookXml).Root?.Element("MsgType")?.Value?.ToUpper();
switch (msgType)
{
case "TEXT":
{
var webhookModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(webhookXml);
}
break;
// 其他情况略
}
```
另一种是利用本库的扩展方法:
```csharp
WechatApiEvent eventModel = client.DeserializeEventFromXml(callbackXml);
string msgType = eventModel.MessageType?.ToUpper();
string msgType = client.DeserializeEventFromXml(webhookXml).MessageType?.ToUpper();
switch (msgType)
{
case "TEXT":
{
var callbackModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(callbackXml);
var webhookModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(webhookXml);
}
break;
// 其他情况略
@@ -65,7 +71,7 @@ var options = new WechatApiClientOptions()
PushToken = "Token",
PushEncodingAESKey = "EncodingAESKey"
};
var client = new WechatApiClient(options);
var client = WechatApiClientBuilder.Create(options).Build();
```
---

View File

@@ -16,22 +16,22 @@ var options = new WechatApiClientOptions()
PushToken = "Token",
PushEncodingAESKey = "EncodingAESKey"
};
var client = new WechatApiClient(options);
var client = WechatApiClientBuilder.Create(options).Build();
/* 验证微信服务器 */
bool ret = client.VerifyEventSignatureForEcho(
callbackTimestamp: "微信回调通知中的 timestamp 字段",
callbackNonce: "微信回调通知中的 nonce 字段",
callbackSignature: "微信回调通知中的 signature 字段"
webhookTimestamp: "微信回调通知中的 timestamp 字段",
webhookNonce: "微信回调通知中的 nonce 字段",
webhookSignature: "微信回调通知中的 signature 字段"
);
/* 验证安全模式下 XML 消息的签名 */
bool ret = client.VerifyEventSignatureFromXml(
callbackXml: "微信公众平台发来的通知内容,形如:<xml><Encrypt>...</Encrypt></xml>"
webhookXml: "微信公众平台发来的通知内容,形如:<xml><Encrypt>...</Encrypt></xml>"
);
/* 验证安全模式下 JSON 消息的签名 */
bool ret = client.VerifyEventSignatureFromJson(
callbackJson: "微信公众平台发来的通知内容,形如:{\"Encrypt\":\"...\"}"
webhookJson: "微信公众平台发来的通知内容,形如:{\"Encrypt\":\"...\"}"
);
```

View File

@@ -30,10 +30,10 @@ public static class MyFakeClientExtensions
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "my-fake-url")
.CreateFlurlRequest(request, HttpMethod.Post, "my-fake-url")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<MyFakeResponse>(flurlReq, request, cancellationToken);
return await client.SendFlurlRequestAsJsonAsync<MyFakeResponse>(flurlReq, request, cancellationToken);
}
}
```
@@ -42,7 +42,7 @@ public static class MyFakeClientExtensions
```csharp
/* 继承 WechatApiEvent 实现自定义的 JSON 格式的回调通知事件 */
public class MyFakeEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable
public class MyFakeEvent : WechatApiEvent
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
@@ -50,7 +50,7 @@ public class MyFakeEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSer
}
/* 继承 WechatApiEvent 实现自定义的 XML 格式的回调通知事件 */
public class MyFakeEvent : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
public class MyFakeEvent : WechatApiEvent
{
[System.Xml.Serialization.XmlElement("my_fake_props")]
public string MyFakeProps { get; set; }

View File

@@ -14,6 +14,9 @@
## 快速入门
> [!IMPORTANT]
> 此目录下的文档适用于 v3.x 版本的模块。如果你正在使用 2.x 版本,请移步至 GitHub/Gitee 的已归档分支。
### 安装:
提示:如果你使用 Visual Studio NuGet 管理器图形化界面,请在搜索结果中勾选“**包括预发行版**”。
@@ -44,7 +47,7 @@ var options = new WechatApiClientOptions()
MidasOfferIdV2 = "米大师 2.0 相关服务 OfferId不用则不填",
MidasAppKeyV2 = "米大师 2.0 相关服务 AppKey不用则不填"
};
var client = new WechatApiClient(options);
var client = WechatApiClientBuilder.Create(options).Build();
```
### 请求 & 响应:
@@ -76,7 +79,7 @@ else
## 基础用法
- [如何快速找到需要调用的 API 模型类名 / 方法名?](./Basic_ModelDefinition.md)
- [如何快速找到需要调用的 API 模型类名 / 方法名?](./Basic_ModelDefinition.md)
- [如何解析回调通知事件?](./Basic_EventDeserialization.md)
@@ -84,7 +87,7 @@ else
- [如何解密经过加密处理的开放数据?](./Basic_OpenDataDecryption.md)
- [如何生成 JS-SDK 初始化时所需的参数及签名?](./Basic_Parameters.md)
- [如何生成 JS-SDK 初始化时所需的参数及签名?](./Basic_Parameters.md)
- [如何自定义额外的 API 接口?](./Basic_Extensions.md)
@@ -92,7 +95,7 @@ else
## 高级技巧
- [如何在 ASP.NET Core 中与 `IHttpClientFactory` 集成?](./Advanced_IHttpClientFactory.md)
- [如何与 `IHttpClientFactory` 集成?](./Advanced_IHttpClientFactory.md)
- [如何指定 JSON 序列化器?](./Advanced_JsonSerializer.md)