Я пытаюсь создать сайт документации API на основе HUGO, который читает схемы JSON и печатает их в HTML.
Я почти на месте, но я озадачен тем, как именно передатьданные, которые я хочу к частичной.
Учитывая стандартный файл схемы JSON, такой как следующее:
{"paths": {
"/auth/login": {
"get": {
"operationId": "login",
"responses": {
"200": {
"description": "",
"schema": {
"ref": "#/definitions/loginResponse"
}
}
}
},
},
"definitions": {
"loginResponse": {
"type": "object"
}
}}
Я хотел бы отобразить детали этого пути, а затем визуализировать частичное с использованием определения схемы в "исх».Я нашел способ прочитать этот ref param и разобрать его в качестве ссылки для определения.«Цель» ниже выглядит следующим образом:
Цель: .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"]
.
Однако в HUGO такой удачи нет.Я просто не могу найти способ перейти от этой целевой строки ключей к реальному параметру.
Помогите!Я что-то упускаю из виду?Я все об этом ошибаюсь?