【代码生成器】codesmith-网络请求(四)

在使用 Codesmith 生成代码时,会存在连接数据库后,提供的数据不足以生成所需要的代码,需要配合其他json数据来生成代码;这些json数据可能来自于api,所以需要使用网络请求获取数据。

HttpClient

一种方式是使用 HttpClient 需要导入程序集和命名空间
HttpClient 文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.net.http.httpclient?view=net-8.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ Template Language="C#" TargetLanguage="Text" Description="HttpClient类库使用" %>

<%-- 导入程序集 --%>
<%@ Assembly Name="System.Net.Http" %>

<%-- 导入命名空间 --%>
<%@ Import Namespace="System.Net.Http" %>
<%@ Import Namespace="CodeSmith.Engine.Json.Linq" %>

<%-- 属性定义 --%>
<%@ Property Type="String" Name="apiUrl" Category="接口" Optional="False" Description="接口地址" %>

<%
// 使用 HttpClient 调用接口
HttpClient httpClient = new HttpClient();
HttpResponseMessage result = httpClient.GetAsync(apiUrl).Result;
string res = result.Content.ReadAsStringAsync().Result;

// 使用 CodeSmith.Engine.Json.Linq 中的 JObject 解析 json
JObject json = JObject.Parse(res);
%>

api获取到的原始json数据:
<%= json %>

获取json中【data】中【user】中【field】的数据
<%= json["data"]["user"]["field"] %>

../../assets/【代码生成器】codesmith-网络请求(四)/1.jpg

WebClient

一种方式是使用 WebClient 导入命名空间即可
WebClient 文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.net.webclient?view=net-8.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ Template Language="C#" TargetLanguage="Text" Description="WebClient类库使用" %>

<%-- 导入命名空间 --%>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="CodeSmith.Engine.Json.Linq" %>

<%-- 属性定义 --%>
<%@ Property Type="String" Name="apiUrl" Category="接口" Optional="False" Description="接口地址" %>

<%
// 使用 WebClient 调用接口
WebClient webClient = new WebClient();
byte[] bytes = webClient.DownloadData(apiUrl);

// 获取到的是字节数据,使用 System.Text 中的 Encoding 将字节数据转换为字符串
string result = Encoding.UTF8.GetString(bytes);

// 使用 CodeSmith.Engine.Json.Linq 中的 JObject 解析 json
JObject json = JObject.Parse(result);
%>

api获取到的原始json数据:
<%= json %>

获取json中【data】中【user】中【field】的数据
<%= json["data"]["user"]["field"] %>

../../assets/【代码生成器】codesmith-网络请求(四)/2.jpg