2012-04-10 59 views
4

我正在編寫一個REST API提供對資源的CRUD操作。是一個API RESTful,如果它允許永久請求(服務器推送)

我希望用戶能夠註冊某些資源更改並通過服務器推送獲取更新。對於服務器推送,我將提供對反向ajax,隱藏的iframe和websockets的支持。爲了爲REST儘可能我創建了處理註冊和客戶端連接的流資源:

流媒體資源:

URI uri : A GET against this URI refreshes the client representation of the resources accessible to this user. 
bool WebSocket : Indicate if websocket is available on this server 
bool ReverseXHR : Indicate if ReverseXHR is available on this server 
bool HiddenIframe : Indicate if HiddenIframe is available on this server 
Registration[] Registrations : The set of registration tasks. 

OpenChannel:開放式流道從Web服務器到客戶端。 GET參數類型=(websocket | xhr | hiddeniframe)

CloseChannel:關閉從網絡服務器到客戶端的流媒體頻道。 GET參數類型=(的WebSocket | XHR | hiddeniframe)

openchannel?type=websocket的調用將打開的WebSocket,並開始流的記錄值中的數據。

我讀過很多文章,但我仍然有點困惑。這樣做後,我還可以調用我的API REST嗎?如果沒有(或是)爲什麼?

謝謝你的幫助!

+0

你是怎麼做到的?我不擔心這種模式的純潔性 - 服務器推送越來越重要。我想知道你是如何實現這個的。 – 2014-08-25 08:02:54

回答

0

首先,始終執行有意義的方法來解決您所面臨的問題。遵循給定的架構風格提供了特定的好處,但是這不應該排除給定問題的實用解決方案。

但話雖如此,似乎您正在使用資源數據流作爲在客戶端和服務器之間「隧道」回信息的方式。我對此很新,但在我看來,隧道數據與REST architectural style.中的uniform interface約束相沖突,這是對基於肥皂的服務的批評級別之一。

+0

現在我只使用流發送數據從服務器到客戶端。 當使用COMET反向ajax或隱藏的iframe技術時,不涉及HTTP之外的其他任何協議。它可以被看作是一個永久的請求,在這種情況下,我不知道它是否與REST兼容。 當使用WebSockets時,它確實是隧道,所以你是對的,這必須打破統一的接口約束。 雖然我會讓問題開放,因爲我對反向ajax和隱藏的iframe的答案感興趣。 Thanks Sixto – LaChocolaterie 2012-04-10 22:10:25

相關問題