개발/Node & Javascript
Nest.js 탐험기 6 - microservice (grpc) 를 사용해보자 - Metadata 설정
말고기
2022. 2. 13. 22:22
728x90
반응형
개요
- 이전 챕터까지는 통신방식의 구현까지 다루었다.
- 이제부터는 부가 기능에 대해서 하나씩 다루어 보려고 한다.
- 우선 이번에는 Metadata를 다루어 보자.
Metadata
- HTTP Header와 같이 GRPC에서는 metadata를 설정할 수 있다. (metadata)
- 실제적으로 Headers frame을 통해서 통신한다.
예제
예제 1. 서버에서 클라이언트 헤더 값을 받을 때
// HeroesController에 아래와 같이 값을 가져올 수 있다.
@GrpcMethod('HeroesService', 'FindOne')
findOne(data: HeroById, metadata?: Metadata, call?: ServerUnaryCall<any,any>): Hero {
// console.log('method call', data, metadata, call);
const items = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Doe' },
];
const malgogi = metadata?.get('malgogi');
console.log(`metadata: ${malgogi}`);
return items.find(({ id }) => id === data.id);
}
위의 코드를 통해서 테스트하면 아래와 같이 값을 볼 수 있다.
예제 2. 서버에서 클라이언트에 헤더 값을 전송할 때
서버에서 클라이언트로 헤더값을 보낼 때는 call.sendMetadata를 활용하면 된다.
// ... 위의코드에서 call에 metadata를 전송할 수 있다.
const respMeta = new Metadata();
respMeta.add('c', 'd');
call.sendMetadata(respMeta);
결론
- nest.js에서 grpc를 통해서 metadata를 주고 받는법을 살펴보았다.
- 실제로 headers frame을 통해서 통신하며, 이를 통해서 공통된 로직들을 쉽게 처리할 수 있을 것이다.
728x90
반응형