Kategorien
Entwicklung GO Lang Programmierung REST API

Basic Auth in GO

Manchmal kommt es vor, dann man Basic Authentication in einigen REST API Schnittstellen anwenden muss. Dieses kann man mit der Standardbibliothek von GO sehr gut abbilden.

Wir gehen nun in unserem Beispiel davon aus, dass wir eine GET Abfrage an eine REST API stellen möchten. Das ganze können wir relativ einfach mit GO Lang umsetzen.

Eine Abfrage könnte wie folgt aussehen.

// Set url
url := "https://" + domain + "/admin/api/2021-07/products.json?limit=250&since_id=" + id

// Basic authentication
basicAuth := base64.StdEncoding.EncodeToString([]byte(username + ":" + password))

// Define client
client := &http.Client{}

// Set request
request, err := http.NewRequest("GET", url, nil)
if err != nil {
       return ProductsReturn{}, err
}

// Set header
request.Header.Set("Authorization", "Basic "+basicAuth)

// Define response & send request
response, err := client.Do(request)
if err != nil {
        return ProductsReturn{}, err
}

// Decode json data
var products ProductsReturn

err = json.NewDecoder(response.Body).Decode(&products)
if err != nil {
	return ProductsReturn{}, err
}

// Close after loop ends
response.Body.Close()

Sie sehen wahrscheinlich schon, wo wir das Encoding für die Authentifizierung vorgenommen habe. Und zwar an folgender Stelle.

// Basic authentication
basicAuth := base64.StdEncoding.EncodeToString([]byte(username + ":" + password))

Dazu muss nun nur noch der Header für die Abfrage angepasst werden. Wenn diese definiert ist, dann kann man den Header wie folgt ergänzen.

// Set header
request.Header.Set("Authorization", "Basic "+basicAuth)

Und schon können Sie Basic Authentication in Ihrer Abfrage nutzen.

Von Jonas Kwiedor

Full- Stack Developer aus Hamburg. Liebt es sich mit Schnittstellen & Automationen auseinander zu setzen und sich mit der Programmiersprache GO Lang zu beschäftigen.