Junior — Middle
111
Каким образом gRPC обрабатывает и передает статусы ответов?
Сұралған компаниялар
Notix Games
AI-дан жауап
sobes.tech AI
gRPC использует собственный механизм передачи статусов ответов, основанный на объекте Status. Каждый ответ gRPC содержит код статуса (например, OK, NOT_FOUND, INTERNAL и др.) и необязательное сообщение с описанием ошибки.
При завершении вызова сервер устанавливает статус, который клиент получает вместе с ответом. В Go это обычно обрабатывается через возвращаемое значение ошибки, которое можно преобразовать в gRPC статус с помощью пакета status.
Пример обработки статуса в Go:
import (
"context"
"google.golang.org/grpc/status"
"google.golang.org/grpc/codes"
)
func (s *server) SomeRPC(ctx context.Context, req *Request) (*Response, error) {
if someErrorCondition {
return nil, status.Error(codes.NotFound, "resource not found")
}
return &Response{Data: "ok"}, nil
}
Клиент может проверить статус ошибки так:
resp, err := client.SomeRPC(ctx, req)
if err != nil {
st, ok := status.FromError(err)
if ok && st.Code() == codes.NotFound {
// обработка ошибки NOT_FOUND
}
}
Таким образом, gRPC передает статусы через код и сообщение, позволяя клиенту точно понять результат вызова.