在使用 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"] %>
|
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"] %>
|