J'étudie Golang.
api Nous utiliserons l 'API pour obtenir l'indice FearAndGreed fourni par Rakuten RapidApi.
Il n'y a pas de requête et il n'y a qu'un seul type de réponse.
config.ini config.go Créez config.ini dans le répertoire racine et placez api_key.
//config.ini
[fgi]
api_key = XXXXXXXXXXXXXXXXXXXXXX
api_host = XXXXXXXXXXXXXXXXXXXXXX
//config.go
package config
import (
"log"
"os"
"gopkg.in/ini.v1"
)
type ConfigList struct {
FgiAPIKey string
FgiAPIHost string
}
//Définition globale de la configuration
var Config ConfigList
func init() {
cfg, err := ini.Load("config.ini")
if err != nil {
log.Printf("Failed to read file: %v", err)
os.Exit(1)
}
Config = ConfigList{
FgiAPIKey: cfg.Section("fgi").Key("api_key").String(),
FgiAPIHost: cfg.Section("fgi").Key("api_host").String(),
}
}
Créez une structure et définissez la clé et l'hôte du fichier config.ini défini précédemment dans ConfigList. Stocker sous forme de chaîne avec .String ().
main.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"index-indicator-apis/config"
)
func main() {
url := "https://fear-and-greed-index.p.rapidapi.com/v1/fgi"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-rapidapi-host", config.Config.FgiAPIHost)
req.Header.Add("x-rapidapi-key", config.Config.FgiAPIKey)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
Obtenez-le avec http.NewRequest de "net / http" et appelez la clé et l'hôte de Config (ConfigList) créés précédemment avec Header.Add.
Exécuter dans le terminal
$ go run main.go
{"fgi":{"now":{"value":63,"valueText":"Greed"},"previousClose":{"value":56,"valueText":"Greed"},"oneWeekAgo":{"value":40,"valueText":"Fear"},"oneMonthAgo":{"value":56,"valueText":"Greed"},"oneYearAgo":{"value":83,"valueText":"Extreme Greed"}}}
J'ai pu obtenir une réponse.
Il semble que le concept de conception de GO soit de décrire uniquement les méthodes et les fonctions qui sont exécutées plus simplement dans le fichier main.go. J'ai donc créé un fichier fgi.go et séparé les fonctions.
// fgi.go
package fgi
import (
"fmt"
"io/ioutil"
"net/http"
"index-indicator-apis/config"
)
func DoRequest() {
url := "https://fear-and-greed-index.p.rapidapi.com/v1/fgi"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-rapidapi-host", config.Config.FgiAPIHost)
req.Header.Add("x-rapidapi-key", config.Config.FgiAPIKey)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
//main.go
package main
import "index-indicator-apis/fgi"
func main() {
fgi.DoRequest()
}
c'est tout! Ensuite, je voudrais convertir davantage la fonction en une méthode et passer les arguments pour la voir!
Recommended Posts