想象一下,某个人想要查询比萨饼服务器以获取比萨饼列表。这个人只会做
GET /pizzas
;=> ["cheese", "extra cheese", "broccoli"]
使用pedestal-app的数据模型和消息,我不确定如何设计客户端-服务器通信。以下是几分钟的吊床带来的可能性:
- 效果
消费者_
- 将消息转换为 HTTP 请求
- 将结果转换回(例如
[{:type :add :topic [:pizzas] :value "cheese"} ...]
) - 将消息放入队列
- 服务器上的专用资源(例如“/edn”)
- 接受基座消息
- 分派到正确的功能
- 响应原始数据(即["cheese"、"extra cheese"、"broccoli"])
- 让效果消费者将结果转换回消息
- 使用路由的专用资源。就像#2,但是
- 更改请求
- 将其转发到路由表中的另一个条目
- 双方留言,同
- 服务器将消息转换为函数调用
- 服务器将结果转换回消息
- 客户端只是将这些消息添加到队列中
在我看来,使用方法 #2 和 #4,我会绕过并失去拦截器的所有好处。使用方法#2,我需要加倍路由逻辑。使用方法#4,我还需要生成大量代码来适应基座客户端。
选项#1 和#3 似乎更好,但#3 闻起来很老套,而#1 方向错误。
你们怎么样?
谢谢!