因此,我对Go非常陌生,我很好奇如何动态导入密码和URL而不会在我的脚本中公开它们。在python中,我能够使用JSON有效负载来实现这一点,并且基本上会导入JSON,加载有效载荷,并指定何时需要传递需要保密的规范。
这是我的Go脚本:
package main
import (
"io/ioutil"
"net/http"
"fmt"
"gopkg.in/yaml.v2"
)
// curl -u <username>:<password> <some_url>
func main() {
type Config struct {
URL string `yaml:"url"`
Username string `yaml:"username"`
Token string `yaml:"token"`
}
func readConfig() (*Config, error) {
config := &Config{}
cfgFile, err := ioutil.ReadFile("config.yaml")
if err != nil {
return nil, err
}
err = yaml.Unmarshal(cfgFile, config)
return config, err
}
req, err := http.NewRequest("GET", config.URL, nil)
if err != nil {
// handle err
}
req.SetBasicAuth(config.Username, config.Token)
resp, err := http.DefaultClient.Do(req)
if err != nil {
// handle err
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
可以想象,我在加载密码时运气不佳,当我使用直接令牌更改以下内容时,它会在脚本中公开我的密码,并在Jira中生成JSON有效负载。
config.URL
config.Username
config.Token
因此,如果我在YAML中有一个配置文件, 如下所示:
config:
URL: "<some_URL>"
Username: "<some_username>"
Token: "<some_token>"
如何将 YAML 文件加载到脚本中?如何加载 JSON 等效项?
{
"config": {
"URL": "<some_URL>"
"Username": "<some_username>",
"Token": "<some_token>"
}
}
慕码人8056858
侃侃尔雅
相关分类