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 generateCela 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/protobufObtenir 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