0Pricing
Go Academy · Ders

gRPC Araya Giricileri ve Meta Veriler

Kimlik doğrulama, günlükleme ara katmanı ve gRPC meta verileri

gRPC Araya Giricileri ve Meta Veriler, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Araya giriciler nedir?

gRPC araya giricileri (ara yazılım), RPC işleyicilerinden önce veya sonra çalışır. Günlükleme, kimlik doğrulama belirteci doğrulaması, ölçüm, panik kurtarma ve izleme gibi ortak gereksinimleri ekler.

Tekli sunucu araya giricisi

Tekli sunucu araya giricisi, işleyiciyi ek mantıkla sarar:

func LoggingInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
    log.Printf("RPC: %s", info.FullMethod)
    resp, err := handler(ctx, req)
    log.Printf("done: %v", err)
    return resp, err
}

grpcSrv := grpc.NewServer(grpc.UnaryInterceptor(LoggingInterceptor))

Akış sunucusu araya giricisi

Tekli araya giriciye benzer, ancak akış işleyicisini sarar:

func StreamLogging(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
    log.Printf("stream: %s", info.FullMethod)
    return handler(srv, ss)
}

Araya giricileri zincirleme

Birden çok araya giriciyi sırayla uygulamak için grpc.ChainUnaryInterceptor (Go gRPC v1.38+) kullanın:

grpcSrv := grpc.NewServer(
    grpc.ChainUnaryInterceptor(LoggingInterceptor, AuthInterceptor, MetricsInterceptor),
)

İstemci araya giricileri

İstemci tarafındaki tekli araya giriciler, giden çağrıları sarar; kimlik doğrulama belirteçleri, yeniden denemeler veya izleme başlıkları eklemek için kullanışlıdır:

conn, _ := grpc.NewClient(addr,
    grpc.WithUnaryInterceptor(ClientAuthInterceptor),
    grpc.WithTransportCredentials(insecure.NewCredentials()),
)

gRPC üst verileri

Üst veriler, bir RPC ile birlikte gönderilen anahtar-değer çiftleridir ve HTTP başlıklarına benzer. İstemcide metadata.New ve metadata.NewOutgoingContext kullanın.

md := metadata.New(map[string]string{"authorization": "Bearer " + token})
ctx := metadata.NewOutgoingContext(context.Background(), md)

Sunucuda üst verileri okuma

Gelen üst verileri metadata.FromIncomingContext ile çıkarın:

md, ok := metadata.FromIncomingContext(ctx)
if !ok { return nil, status.Error(codes.Unauthenticated, "no metadata") }
token := md["authorization"]

Sunucudan üst veri gönderme

Yanıt başlıklarını ve son eklerini sunucudan grpc.SetHeader ve grpc.SetTrailer ile gönderin:

grpc.SetHeader(ctx, metadata.Pairs("x-request-id", requestID))

go-grpc-middleware

github.com/grpc-ecosystem/go-grpc-middleware/v2 kitaplığı hazır araya giriciler sağlar: kurtarma, günlükleme (zap/logrus), kimlik doğrulama ve daha fazlası.

Kimlik doğrulama araya giricisi deseni

Bir araya giricide belirteci çıkarıp doğrulayın; alt işleyicilerin kullanabilmesi için kullanıcıyı bağlama ekleyin:

func AuthInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
    md, _ := metadata.FromIncomingContext(ctx)
    if !validateToken(md["authorization"]) {
        return nil, status.Error(codes.Unauthenticated, "invalid token")
    }
    return handler(ctx, req)
}

Panik kurtarma araya giricisi

Çökmek yerine bir Internal hatası döndürmek için işleyicileri paniklerden kurtaracak şekilde sarın:

defer func() {
    if r := recover(); r != nil {
        err = status.Errorf(codes.Internal, "panic: %v", r)
    }
}()

Hızlı Kontrol

Kimlik doğrulama belirteçlerini bir gRPC istemcisi ile sunucusu arasında nasıl aktarırsınız?

Özet: gRPC Araya Giricileri ve Üst Veriler

Temel noktalar:

  • Tekli araya girici: func(ctx, req, info, handler) (resp, error)
  • Birden çok araya girici için grpc.ChainUnaryInterceptor
  • Üst veriler anahtar-değer çiftleridir; HTTP başlıklarına benzer
  • Kimlik doğrulama araya giricisi: üst verileri çıkar → doğrula → kullanıcıyı bağlama ekle

Sıkça Sorulan Sorular

“gRPC Araya Giricileri ve Meta Veriler” dersi ücretsiz mi?

Evet — “gRPC Araya Giricileri ve Meta Veriler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“gRPC Araya Giricileri ve Meta Veriler” dersinde ne öğreneceğim?

Kimlik doğrulama, günlükleme ara katmanı ve gRPC meta verileri Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“gRPC Araya Giricileri ve Meta Veriler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Protocol Buffers ve .proto Dosyaları
  2. Tekli gRPC Hizmeti Uygulama
  3. Sunucu ve İstemci Akışı
  4. gRPC Araya Giricileri ve Meta Veriler
← Go Academy Sayfasına Dön