Ich studiere Golang.
api Wir werden die API verwenden, um den von Rakuten RapidApi bereitgestellten FearAndGreed-Index zu erhalten.
Es gibt keine Abfrage und nur einen Antworttyp.
config.ini config.go Erstellen Sie die Datei config.ini im Stammverzeichnis und platzieren Sie 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
}
//Globale Definition konfigurieren
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(),
}
}
Erstellen Sie eine Struktur und legen Sie den Schlüssel und den Host der Datei config.ini fest, die zuvor in ConfigList festgelegt wurde. Mit .String () als String speichern.
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))
}
Holen Sie es sich mit http.NewRequest von "net / http" und rufen Sie den zuvor mit Header.Add erstellten Key and Host of Config (ConfigList) auf.
Im Terminal ausführen
$ 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"}}}
Ich konnte eine Antwort bekommen.
Es scheint, dass das Entwurfskonzept von GO darin besteht, nur die Methoden und Funktionen zu beschreiben, die einfacher in der Datei main.go ausgeführt werden. Also habe ich eine fgi.go-Datei erstellt und die Funktionen getrennt.
// 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()
}
das ist alles! Als nächstes möchte ich die Funktion weiter in eine Methode konvertieren und die Argumente übergeben, um sie zu sehen!
Recommended Posts