Define Schema

์Šคํ‚ค๋งˆ ์ •์˜ํ•˜๊ธฐ

WRP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๋“ค์ด ์ „๋‹ฌํ•  ๋ฉ”์„ธ์ง€์™€ ์‚ฌ์šฉํ•  ์„œ๋น„์Šค๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋Š” Protocol Buffers ์Šคํ‚ค๋งˆ ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์—์„œ ์‚ฌ์šฉํ•  ๊ฐ„๋‹จํ•œ ์Šคํ‚ค๋งˆ๋ฅผ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

proto/Example.proto ๊ฐ™์€ ๊ณณ์— ์ €์žฅํ•ด์ฃผ์„ธ์š”.

syntax = "proto3";
package pbkit.wrp.example;

service WrpExampleService {
  rpc GetTextValue(GetTextValueRequest) returns (GetTextValueResponse);
}

message GetTextValueRequest {}
message GetTextValueResponse {
  string text = 1;
}

์Šคํ‚ค๋งˆ์—๋Š” 2๊ฐœ์˜ ๋ฉ”์„ธ์ง€์™€ 1๊ฐœ์˜ rpc๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ์„œ๋น„์Šค(WrpExampleService)๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • GetTextValue: ์„œ๋ฒ„(ํ˜ธ์ŠคํŠธ)๋กœ๋ถ€ํ„ฐ ํ•˜๋‚˜์˜ text ๊ฐ’์„ ๋ฐ›๋Š” rpc์ž…๋‹ˆ๋‹ค.

์ด์ œ๋ถ€ํ„ฐ ๋งŒ๋“ค ์˜ˆ์ œ๋Š” WrpExampleService์˜ GetTextValue๋ฅผ ํ˜ธ์ถœํ•ด ๊ฐ’์„ ๋ฐ›์•„์˜ค๋Š” ํด๋ผ์ด์–ธํŠธ(๊ฒŒ์ŠคํŠธ)์™€ ๊ฒŒ์ŠคํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๊ฐ’์„ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์„œ๋ฒ„(ํ˜ธ์ŠคํŠธ)๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ƒ์„ฑํ•˜๊ธฐ

์ผ๋‹จ, ์ •์˜ํ•œ ์Šคํ‚ค๋งˆ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

์•„๋ž˜์˜ pb gen ts ์ปค๋งจ๋“œ๋Š” Protocol Buffers ํŒŒ์ผ์„ ์ฝ์–ด TypeScript ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

pb gen ts --entry-path=proto --ext-in-import="" --out-dir=generated

entry-path๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋กœ ์ง€์ •ํ•ด์ฃผ์„ธ์š”.
out-dir๋Š” ์ƒ์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋  ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋กœ ์ง€์ •ํ•ด์ฃผ์„ธ์š”. ์˜ˆ์ œ์—์„œ๋Š” generated๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

generated์— messages, runtime, services ํด๋”๊ฐ€ ์ƒ๊ฒผ๋‹ค๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ๋Š” ์ƒ์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ํด๋ผ์ด์–ธํŠธ(๊ฒŒ์ŠคํŠธ)๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.