2013-09-29 23 views
4

想象一下,一些人想要查詢披薩服務器的比薩餅列表。這個人會做簡單的我應該如何與服務器通信?

GET /pizzas 
;=> ["cheese", "extra cheese", "broccoli"] 

隨着底座式應用的數據模型和消息,我不知道如何設計客戶端服務器通信。下面是吊牀的一些分鐘帶來的可能性:

  1. 一種效果消費者
    • 轉換的消息到HTTP請求
    • 變換回結果(至例如[{:type :add :topic [:pizzas] :value "cheese"} ...]
    • 放隊列中的消息
  2. A se上的專用資源rver,例如 「/ EDN」),該
    • 接受基座消息
    • 分派到正確的函數
    • 響應與原始數據( [ 「乾酪」, 「額外的奶酪」, 「西蘭花」])
    • 具有影響消費者變換回結果的消息
  3. 使用路由一個專用資源。就像#2,但
    • 修改請求
    • 將其轉發到路由表的另一個條目
  4. 消息兩側,與
    • 服務器電文轉換函數調用
    • 服務器將結果轉換回消息
    • 客戶端僅將這些消息添加到隊列

在我看來,與接近#2,#4,我會旁路而失去了攔截器的所有好處。使用方法#2,我需要加倍路由邏輯。通過方法#4,我還需要生成大量代碼以適應基礎客戶端。

選項#1和#3似乎更好,但#3味道不好,而且#1,誤導了。

你們是怎麼做到的?

謝謝!

回答

0

我不知道底座,我一直在環/組合/等工作。

隨着環,你可以平凡換東西使用ring.middleware.json,並把周圍的網頁ring.middleware.json/wrap-json-responsering.middleware.json/wrap-json-params,然後入站JSON數據將被分解成參數,你可以返回JSON爲:

(ring.util.response/response ["cheese", "extra cheese", "broccoli"]) 

如果你的庫沒有按不支持這些行爲,你可能會從環中提取相關代碼等。

相關問題