Я пытаюсь создать сайт документации API на основе HUGO, который читает схемы 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 я просто могу передать его в качестве ключа для получения этого параметра param: schema["definitions.loginResponse"]
.
Однако такой удачи в HUGO нет. Я просто не могу найти способ перейти от этой целевой строки к фактическому параметру.
Помогите! Мне что-то не хватает? Неужели я все это делаю неправильно?