From 9874797e6a380ade7a9862a0b2bc2a70e82efa73 Mon Sep 17 00:00:00 2001 From: bicijinlian <bicijinlian@163.com> Date: Wed, 15 Jan 2025 17:49:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Docs/1.0项目管理.dib | 2 + Docs/1.2.使用准则.ipynb | 17 +- Docs/1.3.1.基础使用.发送请求.ipynb | 8 +- ....3.2.基础使用.使用请求数据.ipynb | 184 +++--------------- Docs/1.3.3.基础使用.处理响应.ipynb | 98 +++++++++- Docs/1.6.测试.ipynb | 92 +-------- global.json | 5 + 7 files changed, 148 insertions(+), 258 deletions(-) create mode 100644 global.json diff --git a/Docs/1.0项目管理.dib b/Docs/1.0项目管理.dib index 76d35e2..bc4b55f 100644 --- a/Docs/1.0项目管理.dib +++ b/Docs/1.0项目管理.dib @@ -72,6 +72,8 @@ else { #!csharp +#r "nuget:Microsoft.Extensions.DependencyInjection,8.0.1" + using System; using System.IO; using System.Threading; diff --git a/Docs/1.2.使用准则.ipynb b/Docs/1.2.使用准则.ipynb index 29993f1..c9ffd6a 100644 --- a/Docs/1.2.使用准则.ipynb +++ b/Docs/1.2.使用准则.ipynb @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "csharp" @@ -38,16 +38,7 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "配置文件根目录:c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Core\n", - "程序[c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.exe]已在新的命令行窗口执行。如果未出现新命令行窗口,可能是程序错误造成窗口闪现!\n" - ] - } - ], + "outputs": [], "source": [ "//全局设置\n", "#r \"./Publish/HttpClientStudy.Core/HttpClientStudy.Core.dll\"\n", @@ -119,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "dotnet_interactive": { "language": "pwsh" @@ -696,7 +687,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": { "dotnet_interactive": { "language": "csharp" diff --git a/Docs/1.3.1.基础使用.发送请求.ipynb b/Docs/1.3.1.基础使用.发送请求.ipynb index ec0ac0c..60ee79c 100644 --- a/Docs/1.3.1.基础使用.发送请求.ipynb +++ b/Docs/1.3.1.基础使用.发送请求.ipynb @@ -48,10 +48,10 @@ "outputs": [], "source": [ "//全局设置,行运行一次,为后续准备\n", - "#r \"nuget:System.Net.Http.Json\"\n", - "#r \"nuget:Microsoft.Net.Http.Headers\"\n", - "#r \"nuget:Microsoft.Extensions.Http\"\n", - "#r \"nuget:Microsoft.Extensions.DependencyInjection\"\n", + "//#r \"nuget:Microsoft.Net.Http.Headers,8.0.12\"\n", + "//#r \"nuget:Microsoft.Extensions.Http,8.0.1\"\n", + "//#r \"nuget:System.Net.Http.Json,8.0.1\"\n", + "//#r \"nuget:Microsoft.Extensions.DependencyInjection,8.0.1\"\n", "#r \"./Publish/HttpClientStudy.Model/HttpClientStudy.Model.dll\"\n", "#r \"./Publish/HttpClientStudy.Core/HttpClientStudy.Core.dll\"\n", "\n", diff --git a/Docs/1.3.2.基础使用.使用请求数据.ipynb b/Docs/1.3.2.基础使用.使用请求数据.ipynb index eaa7551..a382aa2 100644 --- a/Docs/1.3.2.基础使用.使用请求数据.ipynb +++ b/Docs/1.3.2.基础使用.使用请求数据.ipynb @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "csharp" @@ -45,33 +45,14 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "data": { - "text/html": [ - "<div><div></div><div></div><div><strong>Installed Packages</strong><ul><li><span>Microsoft.Extensions.Http, 8.0.0</span></li><li><span>Microsoft.Net.Http.Headers, 8.0.8</span></li><li><span>System.Net.Http.Json, 8.0.0</span></li></ul></div></div>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "配置文件根目录:e:\\王高峰\\我的项目\\学习项目\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Core\n", - "启动WebApi项目\n", - "程序[e:\\王高峰\\我的项目\\学习项目\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.exe]已在新的命令行窗口执行。如果未出现新命令行窗口,可能是程序错误造成窗口闪现!\n" - ] - } - ], + "outputs": [], "source": [ "//初始化,只执行一次\n", "\n", "// 引用nuget包和类库文件\n", - "#r \"nuget:System.Net.Http.Json\"\n", - "#r \"nuget:Microsoft.Net.Http.Headers\"\n", - "#r \"nuget:Microsoft.Extensions.Http\"\n", + "//#r \"nuget:Microsoft.Net.Http.Headers,8.0.12\"\n", + "//#r \"nuget:Microsoft.Extensions.Http,8.0.1\"\n", + "//#r \"nuget:System.Net.Http.Json,8.0.1\"\n", "#r \"./Publish/HttpClientStudy.Model/HttpClientStudy.Model.dll\"\n", "#r \"./Publish/HttpClientStudy.Core/HttpClientStudy.Core.dll\"\n", "\n", @@ -126,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "csharp" @@ -138,96 +119,7 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "配置文件根目录:e:\\王高峰\\我的项目\\学习项目\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Core\n", - "{\"data\":{\"id\":1,\"name\":\"管理员01\",\"password\":\"123456\",\"role\":\"Admin\"},\"code\":1,\"message\":\"成功\"}\n" - ] - }, - { - "data": { - "text/html": [ - "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>HttpClientStudy.Model.BaseResult`1[HttpClientStudy.Model.Account]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Data</td><td><div class=\"dni-plaintext\"><pre>HttpClientStudy.Model.BaseResult`1[HttpClientStudy.Model.Account]</pre></div></td></tr><tr><td>Code</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>Message</td><td><div class=\"dni-plaintext\"><pre>成功</pre></div></td></tr><tr><td>Data</td><td><div class=\"dni-plaintext\"><pre>HttpClientStudy.Model.BaseResult`1[HttpClientStudy.Model.Account]</pre></div></td></tr></tbody></table></div></details><style>\r\n", - ".dni-code-hint {\r\n", - " font-style: italic;\r\n", - " overflow: hidden;\r\n", - " white-space: nowrap;\r\n", - "}\r\n", - ".dni-treeview {\r\n", - " white-space: nowrap;\r\n", - "}\r\n", - ".dni-treeview td {\r\n", - " vertical-align: top;\r\n", - " text-align: start;\r\n", - "}\r\n", - "details.dni-treeview {\r\n", - " padding-left: 1em;\r\n", - "}\r\n", - "table td {\r\n", - " text-align: start;\r\n", - "}\r\n", - "table tr { \r\n", - " vertical-align: top; \r\n", - " margin: 0em 0px;\r\n", - "}\r\n", - "table tr td pre \r\n", - "{ \r\n", - " vertical-align: top !important; \r\n", - " margin: 0em 0px !important;\r\n", - "} \r\n", - "table th {\r\n", - " text-align: start;\r\n", - "}\r\n", - "</style>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>HttpClientStudy.Model.BaseResult`1[HttpClientStudy.Model.Account]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Data</td><td><div class=\"dni-plaintext\"><pre>HttpClientStudy.Model.BaseResult`1[HttpClientStudy.Model.Account]</pre></div></td></tr><tr><td>Code</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>Message</td><td><div class=\"dni-plaintext\"><pre>成功</pre></div></td></tr><tr><td>Data</td><td><div class=\"dni-plaintext\"><pre>HttpClientStudy.Model.BaseResult`1[HttpClientStudy.Model.Account]</pre></div></td></tr></tbody></table></div></details><style>\r\n", - ".dni-code-hint {\r\n", - " font-style: italic;\r\n", - " overflow: hidden;\r\n", - " white-space: nowrap;\r\n", - "}\r\n", - ".dni-treeview {\r\n", - " white-space: nowrap;\r\n", - "}\r\n", - ".dni-treeview td {\r\n", - " vertical-align: top;\r\n", - " text-align: start;\r\n", - "}\r\n", - "details.dni-treeview {\r\n", - " padding-left: 1em;\r\n", - "}\r\n", - "table td {\r\n", - " text-align: start;\r\n", - "}\r\n", - "table tr { \r\n", - " vertical-align: top; \r\n", - " margin: 0em 0px;\r\n", - "}\r\n", - "table tr td pre \r\n", - "{ \r\n", - " vertical-align: top !important; \r\n", - " margin: 0em 0px !important;\r\n", - "} \r\n", - "table th {\r\n", - " text-align: start;\r\n", - "}\r\n", - "</style>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "/**\n", " URL传参:适合简单数据类型\n", @@ -275,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "csharp" @@ -287,15 +179,7 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\"data\":{\"id\":1,\"name\":\"管理员01\",\"password\":\"123456\",\"role\":\"Admin\"},\"code\":1,\"message\":\"成功\"}\r\n" - ] - } - ], + "outputs": [], "source": [ "/*\n", "** 路由参数:参数是URL的一部分,由后端指定\n", @@ -331,7 +215,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "csharp" @@ -343,15 +227,7 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\"data\":{\"id\":1,\"name\":\"管理员01\",\"password\":\"123456\",\"role\":\"Admin\"},\"code\":1,\"message\":\"成功\"}\r\n" - ] - } - ], + "outputs": [], "source": [ "/*\n", "* 请求头: 值必须是字符串,如果有中文等需进行编码\n", @@ -429,21 +305,19 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, "vscode": { "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\"data\":\"id=1&name=管理员01\",\"code\":1,\"message\":\"成功\"}\r\n" - ] - } - ], + "outputs": [], "source": [ "/*\n", "* Form表单,提交数据。一般为Put或Post提交。\n", @@ -475,8 +349,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, "vscode": { "languageId": "polyglot-notebook" } @@ -504,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "csharp" @@ -516,15 +396,7 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\"data\":\"我是请求体第一段内容\",\"code\":1,\"message\":\"成功\"}\r\n" - ] - } - ], + "outputs": [], "source": [ "/*\n", " \n", diff --git a/Docs/1.3.3.基础使用.处理响应.ipynb b/Docs/1.3.3.基础使用.处理响应.ipynb index 7656438..fe2ff1c 100644 --- a/Docs/1.3.3.基础使用.处理响应.ipynb +++ b/Docs/1.3.3.基础使用.处理响应.ipynb @@ -28,7 +28,103 @@ } }, "source": [ - "## 1、复用" + "## 1、初始化及全局设置" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "//初始化,只执行一次\n", + "\n", + "// 引用nuget包和类库文件\n", + "//#r \"nuget:Microsoft.Net.Http.Headers,8.0.12\"\n", + "//#r \"nuget:Microsoft.Extensions.Http,8.0.1\"\n", + "//#r \"nuget:System.Net.Http.Json,8.0.1\"\n", + "#r \"./Publish/HttpClientStudy.Model/HttpClientStudy.Model.dll\"\n", + "//已引用相关类库\n", + "#r \"./Publish/HttpClientStudy.Core/HttpClientStudy.Core.dll\"\n", + "\n", + "//全局引用\n", + "global using System;\n", + "global using System.Collections;\n", + "global using System.Linq;\n", + "global using System.Linq.Expressions;\n", + "global using System.Threading;\n", + "global using System.Threading.Tasks;\n", + "global using System.Net.Http;\n", + "global using System.Net.Mime;\n", + "global using System.Net.Http.Json;\n", + "\n", + "global using HttpClientStudy.Config;\n", + "global using HttpClientStudy.Model;\n", + "global using HttpClientStudy.Core;\n", + "global using HttpClientStudy.Core.Utilities;\n", + "\n", + "//全局变量\n", + "var webApiBaseUrl = WebApiConfigManager.GetWebApiConfig().BaseUrl;\n", + "var workDir = Environment.CurrentDirectory;\n", + "var fullPath = System.IO.Path.GetFullPath(\"./Publish/HttpClientStudy.WebApp/HttpClientStudy.WebApp.exe\", workDir);\n", + "\n", + "//全局共享静态 HttpClient 对象\n", + "public static HttpClient SharedClient = new HttpClient(new SocketsHttpHandler(){ PooledConnectionIdleTimeout = TimeSpan.FromSeconds(30)})\n", + "{\n", + " BaseAddress = new Uri(WebApiConfigManager.GetWebApiConfig().BaseUrl),\n", + "};\n", + "\n", + "//启动已发布的WebApi项目\n", + "{\n", + " Console.WriteLine(\"启动WebApi项目\");\n", + " var startMessage = AppUtility.RunWebApiExeFile(fullPath);\n", + " Console.WriteLine(startMessage);\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2、处理响应状态" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3、处理异常响应" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4、处理响应数据" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.1 接收响应头数据" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.2 接收响应体数据" ] } ], diff --git a/Docs/1.6.测试.ipynb b/Docs/1.6.测试.ipynb index 2c5474b..6ba2831 100644 --- a/Docs/1.6.测试.ipynb +++ b/Docs/1.6.测试.ipynb @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "csharp" @@ -45,41 +45,7 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.0项目管理.dib\n", - "1.1.概述.ipynb\n", - "1.2.使用准则.ipynb\n", - "1.3.0.基础使用.管理客户端.ipynb\n", - "1.3.1.基础使用.发送请求.ipynb\n", - "1.3.2.基础使用.使用请求体.ipynb\n", - "1.3.3.基础使用.处理响应.ipynb\n", - "1.3.4.基础使用.处理错误.ipynb\n", - "1.3.5.基础使用.使用代理.ipynb\n", - "1.3.6.基础使用.使用Json.ipynb\n", - "1.3.7.基础使用.使用Cookie.ipynb\n", - "1.4.0.高级使用.概述.ipynb\n", - "1.4.1.高级使用.初始化.ipynb\n", - "1.4.2.高级使用.连接池.ipynb\n", - "1.4.3.高级使用.重复使用.ipynb\n", - "1.4.4.高级使用.使用管道.ipynb\n", - "1.4.5.高级使用.类型化客户端.ipynb\n", - "1.4.6..高级使用.工厂模式.ipynb\n", - "1.4.7.高级使用.Polly.ipynb\n", - "1.5.总结.ipynb\n", - "1.6.测试.ipynb\n", - "2.1.内核中的各种路径.ipynb\n", - "Assets\n", - "Publish\n", - "学习.ps1\n", - "说明.md\n", - "\r\n" - ] - } - ], + "outputs": [], "source": [ "//引用项目\n", "#r \"./Publish/HttpClientStudy.Core/HttpClientStudy.Core.dll\"\n", @@ -141,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "pwsh" @@ -153,23 +119,7 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "进程没有找到,可能已经关闭\r\n" - ] - }, - { - "ename": "Error", - "evalue": "Command failed: SubmitCode: # 关闭项目进程 ...", - "output_type": "error", - "traceback": [ - "Command failed: SubmitCode: # 关闭项目进程 ..." - ] - } - ], + "outputs": [], "source": [ "# 关闭项目进程\n", "$WebAppProcName =\"HttpClientStudy.WebApp\";\n", @@ -193,7 +143,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "csharp" @@ -205,24 +155,7 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.exe" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "程序[c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.exe]已在新的命令行窗口执行。如果未出现新命令行窗口,可能是程序错误造成窗口闪现!\r\n" - ] - } - ], + "outputs": [], "source": [ "//启动已发布的WebApi项目\n", "#r \"./Publish/HttpClientStudy.Core/HttpClientStudy.Core.dll\"\n", @@ -239,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "metadata": { "dotnet_interactive": { "language": "csharp" @@ -251,16 +184,7 @@ "languageId": "polyglot-notebook" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "配置文件根目录:c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Core\n", - "WebApi程序[进程号:,进程名:],已关闭!\n" - ] - } - ], + "outputs": [], "source": [ "//关闭项目进程\n", "#r \"./Publish/HttpClientStudy.Core/HttpClientStudy.Core.dll\"\n", diff --git a/global.json b/global.json new file mode 100644 index 0000000..215288b --- /dev/null +++ b/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "8.0" + } +} \ No newline at end of file