ASP.NET Core gRPC로 필터 같은 걸 하고 싶은데
6507 단어 C#gRPCASP.NET Coretech
그나저나 좀 오래된 기사지만 구글에서는 이렇게 사용할 수 있을 것 같아요.
ASP.NET Core gRPC의 경우 Startup.cs
ConfigureServices
의 services.AddGrpc
에서 호출된 곳에서 옵션을 구성하는 리셋이 있습니다. 거기에서Interceptor를 설정할 수 있습니다.인터셉터는 이름에 따라 계승 제작
Grpc.Core.Interceptors.Interceptor
하여 전처리와 후처리를 하고자 하는 방법을 다시 쓴다.순수한 클라이언트에서 서버 방법을 읽고 결과를 되돌려 주는 형식
UnaryServerHandler
이라면, 다시 쓰는 방법입니다.예를 들어 호출하기 전에 로그를 제출할 때 다음 Interceptor를 만듭니다.LoggingInterceptor.cs
class LoggingInterceptor : Interceptor
{
private readonly ILogger<LoggingInterceptor> logger;
public LoggingInterceptor(ILogger<LoggingInterceptor> logger)
{
this.logger = logger;
}
public override Task<TResponse> UnaryServerHandler<TRequest, TResponse>(TRequest request, ServerCallContext context, UnaryServerMethod<TRequest, TResponse> continuation)
{
this.logger.LogInformation($"★ {context.Host}, {context.Method}");
return base.UnaryServerHandler(request, context, continuation);
}
}
ServerCallContext의 Method에는 /greet.Greeter/SayHello
라는 값이 포함되어 있기 때문에 각 방법을 고유하게 처리하려면 여기를 보고 처리한다.이 문자열에서 특정 대상의 분류를 보면 속성을 핥아서 다양한 일을 할 수 있다.(이런 메커니즘은 원래 있는 건가?)
Request 매개 변수에는 실제로 고객이 호출할 때 건네주는 대상이 포함되어 있지만 이 서명은 Object형을 처리하는 것과 다를 것이 없기 때문에 Method가 적시에 캐릭터를 분배하는 것을 보고 싶습니다.
이 인터셉터
ConfigureServices
를 등록하려면 다음과 같은 방법으로 AddGrpc
의 options
에서 Interceptors
에 등록할 수 있다.Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
options.Interceptors.Add<LoggingInterceptor>();
});
}
이 Interceptor를 추가한 상태에서 서비스를 호출하면 다음 로그가 나타납니다.info: GrpcService1.LoggingInterceptor[0]
★ localhost:5001, /greet.Greeter/SayHello
Reference
이 문제에 관하여(ASP.NET Core gRPC로 필터 같은 걸 하고 싶은데), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/okazuki/articles/grpc-interceptor텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)