誰かがピザ サーバーにピザのリストを問い合わせたいと考えているとします。この個人は単純に
GET /pizzas
;=> ["cheese", "extra cheese", "broccoli"]
pedestal -appのデータ モデルとメッセージでは、クライアント サーバー通信をどのように設計すればよいかわかりません。数分間のハンモックがもたらした可能性は次のとおりです。
- 効果消費者
- メッセージを HTTP リクエストに変換します
[{:type :add :topic [:pizzas] :value "cheese"} ...]
結果を (例えば に)変換します- メッセージをキューに入れる
- サーバー上の専用リソース( 「/edn」など)
。
- 台座メッセージを受け入れます
- 正しい関数にディスパッチする
- 生データで応答します(つまり、[「チーズ」、「エクストラチーズ」、「ブロッコリー」])
- effect-consumer 変換で結果をメッセージに戻す
- ルートを使用する専用リソース。#2と同じですが、
- リクエストの変更
- ルートテーブルの別のエントリに転送する
- 両面にメッセージ、
- メッセージを関数呼び出しに変換するサーバー
- 結果をメッセージに戻すサーバー
- これらのメッセージをキューに追加するクライアント
アプローチ #2 と #4 を使用すると、インターセプターのすべての利点をバイパスして失うように思えます。アプローチ 2 では、ルーティング ロジックを 2 倍にする必要があります。アプローチ #4 では、ペデスタル クライアントに対応するために大量のコードも生成する必要があります。
オプション #1 と #3 の方が優れているように見えますが、#3 はハックの匂いがし、#1 は方向性が間違っています。
どうやってやってるの?
ありがとう!