我是sails.js的新手,我有一個簡單的藍圖模型設置。現在,我的控制器和模型幾乎是空的,除了模型上的屬性定義。模型的sails.js藍圖中的自定義XML響應?
通過POST創建模型後,我希望該響應是自定義XML響應(我生成的一些純文本),而不是標準的JSON響應。我想我可以覆蓋控制器上的整個創建方法,本質上是複製和粘貼默認代碼並覆蓋響應,但這看起來真的很重。
必須有更好的方法來做到這一點?
請注意,我只是試圖爲這個特定的模型,而不是一般。
謝謝!
我是sails.js的新手,我有一個簡單的藍圖模型設置。現在,我的控制器和模型幾乎是空的,除了模型上的屬性定義。模型的sails.js藍圖中的自定義XML響應?
通過POST創建模型後,我希望該響應是自定義XML響應(我生成的一些純文本),而不是標準的JSON響應。我想我可以覆蓋控制器上的整個創建方法,本質上是複製和粘貼默認代碼並覆蓋響應,但這看起來真的很重。
必須有更好的方法來做到這一點?
請注意,我只是試圖爲這個特定的模型,而不是一般。
謝謝!
如果您的結果是爲了在單一模型上對所有操作執行此操作,您可以簡單地覆蓋toJSON方法以在模型本身中生成XML而不是JSON。然後,如果你正在運行的藍圖,當你點擊這些端點時,它會吐出XML而不是json。
但是,您的問題是特定於創建操作。在這種情況下,我會問你是否運行了非Ajax請求的替代視圖文件。如果沒有,只需將視圖文件放入使用xml佈局的views/foo/create [ejs,jade等]創建操作中即可。該響應將會看到該視圖文件並使用該文件覆蓋json輸出。這意味着您必須更改任何代碼才能添加該單個文件。
他們有十幾種方法來完成這個任務,並且您的問題需要更多的細節(如評論中提到的),以便針對您的用例的特定答案。
要更改特定響應的標題。
response.setHeader("Content-type", "text/xml");
當你已經有一些XML的response.send()
最好的辦法是簡單地添加標題爲DigitalDesignDj提及。
/**
* TestController
*/
module.exports = {
create: function(res, req) {
// get your data
var xml = 'some xml string';
res.setHeader("Content-type", "text/xml");
res.send(xml);
}
}
這取決於您的應用程序的設置方式。它純粹和API?你有任何查看文件?什麼是請求信息,另一臺服務器或基於瀏覽器的客戶端?這個創建控制器現在駐留在哪裏(它是否在藍圖中?如果是這樣,你需要pubsub/sockets嗎?)它僅僅用於創建模型還是用於模型上的所有操作? – Meeker 2015-02-12 15:29:05