Glance项目自定义API模板使用指南
前言
Glance项目提供了一套强大的自定义API模板系统,允许开发者灵活地处理和展示来自各种API的数据。本文将详细介绍如何使用这套模板系统,包括基础语法、常见用例以及高级功能。
基础概念
在Glance中,自定义API模板基于Go语言的模板语法,并扩展了大量实用函数。模板主要用于:
- 解析API返回的JSON数据
- 对数据进行处理和转换
- 生成最终的HTML输出
基础用法
简单JSON解析
对于最简单的JSON响应:
{
"title": "我的标题",
"content": "我的内容"
}
可以使用以下模板提取数据:
<div>{{ .JSON.String "title" }}</div>
<div>{{ .JSON.String "content" }}</div>
输出结果为:
<div>我的标题</div>
<div>我的内容</div>
数组遍历
当JSON中包含数组时:
{
"posts": [
{"title": "文章1", "content": "内容1"},
{"title": "文章2", "content": "内容2"}
]
}
使用range
遍历数组:
{{ range .JSON.Array "posts" }}
<div>{{ .String "title" }}</div>
<div>{{ .String "content" }}</div>
{{ end }}
注意在range
内部,上下文自动切换到当前数组元素,因此不需要再使用.JSON
前缀。
访问上级上下文
在遍历数组时,如果需要访问顶级JSON中的字段:
{{ range .JSON.Array "posts" }}
<div>{{ .String "title" }}</div>
<div>{{ $.JSON.String "author" }}</div>
{{ end }}
使用$
可以访问最外层的上下文。
高级用法
嵌套对象访问
对于深层嵌套的JSON结构:
{
"user": {
"address": {
"city": "北京",
"district": "朝阳区"
}
}
}
可以使用点号表示法直接访问:
<div>{{ .JSON.String "user.address.city" }}</div>
条件判断
检查字段是否存在:
{{ if .JSON.Exists "user.age" }}
<div>年龄: {{ .JSON.Int "user.age" }}</div>
{{ else }}
<div>年龄未提供</div>
{{ end }}
数学运算
Glance支持基本的数学运算:
<div>折扣后价格: {{ sub (.JSON.Int "price") (.JSON.Int "discount") }}</div>
支持的运算符包括:
add
- 加法sub
- 减法mul
- 乘法div
- 除法mod
- 取模
日期处理
Glance提供了强大的日期处理功能:
<div {{ .String "publish_date" | parseTime "rfc3339" | toRelativeTime }}></div>
这将输出类似"2小时前"、"3天前"的相对时间。注意toRelativeTime
必须用作HTML标签的属性。
响应状态检查
可以检查API响应的状态码:
{{ if eq .Response.StatusCode 200 }}
<p>请求成功</p>
{{ else }}
<p>请求失败: {{ .Response.Status }}</p>
{{ end }}
JSON Lines格式处理
对于每行一个JSON对象的格式:
{"name": "张三", "age": 25}
{"name": "李四", "age": 30}
首先需要在配置中禁用JSON验证:
- type: custom-api
skip-json-validation: true
然后使用.JSONLines
遍历:
{{ range .JSONLines }}
<p>{{ .String "name" }} 今年 {{ .Int "age" }} 岁</p>
{{ end }}
链式API调用
Glance支持在一个模板中发起多个API请求:
- type: custom-api
template: |
{{ $first := newRequest "https://api.example.com/first" | getResponse }}
{{ $second := newRequest (concat "https://api.example.com/second/" $first.JSON.String "id") | getResponse }}
{{ $second.JSON.String "result" }}
可以添加请求参数和头信息:
{{
$data := newRequest "https://api.example.com/data"
| withParameter "key" "value"
| withHeader "Authorization" "Bearer token"
| getResponse
}}
实用函数参考
Glance提供了丰富的实用函数,主要分为以下几类:
JSON处理函数
String
/Int
/Float
/Bool
- 获取对应类型的值Array
- 获取数组Exists
- 检查字段是否存在
类型转换函数
toFloat
/toInt
- 数值类型转换parseTime
/formatTime
- 时间解析和格式化
字符串处理
trimPrefix
/trimSuffix
- 去除前后缀replaceAll
- 字符串替换concat
- 字符串连接
数组操作
sortByString
/sortByInt
- 数组排序unique
- 数组去重
数学运算
- 基本四则运算
percentChange
- 百分比变化计算
日期时间
now
/offsetNow
- 获取当前时间startOfDay
/endOfDay
- 获取一天的开始/结束
最佳实践
- 总是检查API响应状态码
- 对可能不存在的字段使用
Exists
检查 - 复杂的逻辑可以拆分为多个API调用
- 使用
toRelativeTime
增强时间显示体验 - 对大型数组考虑使用分页或限制返回数量
通过掌握这些模板技巧,你可以充分利用Glance的自定义API功能,构建出丰富多样的数据展示界面。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考