G A*_*ini 14 schema templates json go hugo
我正在尝试创建一个基于HUGO的API文档站点,该站点读取JSON模式,并以HTML格式打印它们.
我几乎就在那里,但我很难知道如何传递我想要的部分数据.
给定标准JSON模式文件,如下所示:
{"paths": {
"/auth/login": {
"get": {
"operationId": "login",
"responses": {
"200": {
"description": "",
"schema": {
"ref": "#/definitions/loginResponse"
}
}
}
},
},
"definitions": {
"loginResponse": {
"type": "object"
}
}}
Run Code Online (Sandbox Code Playgroud)
我想显示该路径的详细信息,然后使用"ref"中的模式定义渲染部分.我找到了一种方法来读取该参数,并将其解析为定义的引用.下面的"目标"看起来像:
目标:.definitions.loginResponse
{{ range $path, $methods := .paths }}
<h4>{{ $path }}</h4>
{{ range $method, $items := $methods }}
<h5>{{ $method }}</h5>
<ul>
{{ range $status, $info := .responses }}
<li>
<div>{{ $status }}</div>
<h6>Ref: {{ $info.schema.ref }}</h6>
<p>Target: {{ $target := (printf ".definitions.%s" (index (findRE "[^/]+(/?$)" $info.schema.ref) 0))}}</p>
<div>{{ partial "schema" $target }}</div>
</li>
{{ end }}
</ul>
{{end}}
{{end}}
Run Code Online (Sandbox Code Playgroud)
麻烦的是,$target是一个字符串.在Javascript中,我只能将其作为获取该对象参数的密钥传递:schema["definitions.loginResponse"].
然而,在HUGO没有这样的运气.我根本找不到从目标键字符串到实际参数的方法.
救命!我错过了一些明显的东西吗 我错了吗?
小智 0
我认为你需要使用字典https://gohugo.io/functions/dict/
你的{{ partial "schema" $target }}可以改为{{ partial "schema" (dict "target_name" $target) }}
在“模式”部分中,您可以使用以下方式访问值"{{ .target_name }}"