For the complete documentation index, see llms.txt. This page is also available as Markdown.

Exemples Go

Exemples Go exécutables pour l’API gRPC de KiloCenter — générez des stubs avec buf, authentifiez-vous et appelez les méthodes de liaison montante.

Cette page fournit des exemples Go exécutables pour l’API gRPC KiloCenter. Pour la référence complète de l’API, voir Référence de l’API.

Pour la documentation générale sur gRPC en Go, voir grpc.io/docs/languages/go.

Prérequis

Toutes les commandes de ce guide supposent que votre répertoire de travail est kilocenter-modules/.

Générez les stubs Go à partir des définitions proto à l’aide de buf :

cd KC-Core/api/proto && buf generate

Cela génère du code dans KC-Core/api/gen/kilocenter/v1/.

Installez les modules Go requis :

go get google.golang.org/grpc
go get google.golang.org/protobuf

Obtenir l’état du système

Récupère l’état actuel du système, y compris la version, le temps de fonctionnement et l’état des services.

package main

import (
	"context"
	"fmt"
	"log"

	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials/insecure"
	"google.golang.org/protobuf/types/known/emptypb"

	kilocenterv1 "github.com/kilocenter/KC-Core/api/gen/kilocenter/v1"
)

// le serveur est le point de terminaison gRPC KiloCenter KC-Gateway.
var server = "localhost:9090"

func main() {
	conn, err := grpc.NewClient(server, grpc.WithTransportCredentials(insecure.NewCredentials()))
	if err != nil {
		log.Fatalf("échec de la connexion : %v", err)
	}
	defer conn.Close()

	client := kilocenterv1.NewKiloCenterServiceClient(conn)

	resp, err := client.GetSystemStatus(context.Background(), &emptypb.Empty{})
	if err != nil {
		log.Fatalf("GetSystemStatus a échoué : %v", err)
	}

	fmt.Printf("Version:            %s\n", resp.Version)
	fmt.Printf("État:             %s\n", resp.Status)
	fmt.Printf("Durée de fonctionnement:             %s\n", resp.Uptime.AsTime())
	fmt.Printf("Points de terminaison actifs:   %d\n", resp.ActiveEndpoints)
	fmt.Printf("Stations de base actives: %d\n", resp.ActiveBasestations)
	fmt.Printf("Messages traités: %d\n", resp.MessagesProcessed)

	for _, svc := range resp.Services {
		fmt.Printf("  Service: %s  sain=%v  latence=%dms\n", svc.Name, svc.Healthy, svc.LatencyMs)
	}
}

Lister les points de terminaison

Liste les points de terminaison enregistrés avec prise en charge de la pagination. Profil à volume élevé : taille de page par défaut 100, maximum 1000.

Authentification

Édition communautaire

L’Édition communautaire fonctionne en mode mono-locataire avec l’authentification et l’application des organisations désactivées (auth.enabled: false, org_enforcement_enabled: false). Les exemples ci-dessus fonctionnent sans aucun en-tête.

Entreprise : principal utilisateur JWT

Nécessite trois en-têtes : authorization, x-organization-id, et x-user-id. Le x-user-id La valeur doit correspondre à l’utilisateur authentifié dans le JWT. L’absence de x-user-id renvoie ErrTokenUserIDHeaderRequired; une incompatibilité renvoie ErrTokenIdentityMismatch.

Entreprise : clé API de compte de service

Nécessite deux en-têtes : authorization et x-organization-id. Ne pas envoyez x-user-id — l’inclure renvoie ErrTokenIdentityMismatch pour empêcher l’injection d’utilisateur.

Mis à jour