繁体   English   中英

如何获取 openapi 服务器值

[英]How to get at openapi server values

我的服务器有以下yaml openapi 3 config':

servers:
  - url: "localhost"
    description: "localhost development server"
    variables:
        port:
            default: ":10000"

没有那个讨厌的破折号,通过viper获得这些值是微不足道的,但我正在努力解决它(这是使yaml openapi 3兼容所必需的。

这样做:

servers := viper.Get("servers")
fmt.Println(reflect.TypeOf(servers))
fmt.Println(servers)

告诉我这个:

[]interface {}
[map[description:localhost development server url:localhost variables:map[port:map[default::10000]]]]

但是我的 n00bie golang能力缺乏 ninja Skillz 来检索port:10000值。

非常感谢任何帮助!

servers是一个阵列。 假设 Viper 无法处理 arrays,您首先必须索引servers以获取其中的 object:

server:=servers[0]

一旦你有了服务器,假设它是一个map[string]interface{} ,你可以下降:

if v, ok:=server["variables"]; ok {
   if varMap, ok:=v.(map[string]interface{}); ok {
      if p, ok:=varMap["port"]; ok {
        if port, ok:=p.(map[string]interface{}); ok {
           if d, ok:=port["default"]; ok {
               defaultValue=fmt.Sprint(d)
           } 
        }
      }
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM