我正在尝试创建一个基于HUGO的API文档站点,该站点读取JSON模式并以HTML格式打印。
我快到了,但是我对如何准确传递想要部分传递的数据感到困惑。
给出一个标准的JSON模式文件,例如:
{"paths": {
"/auth/login": {
"get": {
"operationId": "login",
"responses": {
"200": {
"description": "",
"schema": {
"ref": "#/definitions/loginResponse"
}
}
}
},
},
"definitions": {
"loginResponse": {
"type": "object"
}
}}
我想显示该路径的详细信息,然后使用“ ref”中的模式定义来呈现部分内容。我找到了一种读取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}}
麻烦的是,$target
是一个字符串。在Javascript中,我只能将其作为获取该对象参数的键:schema["definitions.loginResponse"]
。
但是,雨果没有这种运气。我根本找不到从该目标键字符串到实际参数的方法。
帮助!我是否缺少明显的东西?我要把这都弄错了吗?
答案 0 :(得分:1)
想通了!万一有人遇到同样的问题,只需使用Hugo的index function即可完成参数查找。
{{ $target := index $info.schema "$ref" | findRE "[^/]+(/?$)" }}
对于$target
,在父级上下文中,它仅仅是{{ index . $target }}
。