2017-04-13 63 views
-1

假設我有一個名爲User的模型及其基本的REST CRUD(GET,POST,DELETE,UPDATE)。如何響應HTML或JSON取決於Sails.js中的請求

當我去user/4(其中4是一個用戶的ID是不存在),有兩種情況:

  1. 如果我用REST客戶端,就像郵差做,我會得到一個404,沒有別的。
  2. 如果我在瀏覽器上,我會得到一個404頁面(包含文本,圖片等),這是在視圖文件夾中定義的。

我怎麼能做到這一點的findOnefind和其他網址嗎?我希望能夠擁有僅限JSON的響應,以及針對不同類型的請求的HTML頁面響應。但我不想重寫這些函數,因爲ORM已經在做很多我不想丟失的工作。

編輯:我的解決辦法是留下一個前綴,如/api/user/4的API,並且沒有前綴user/4 HTML響應,但我希望看到更多的優雅的解決方案。

編輯2:我決定全力以赴JSON,並使用REST服務只與一個獨立的前端;)

回答

0

如果你有在由API客戶端發送的報頭控制,我看到兩個乾淨語義的解決方案,基於首派:

  • 你可以依靠X-Requested-With: XMLHttpRequest頭識別阿賈克斯查詢
  • 依靠Accept: text/json標頭明確要求JSON

你也可以修改url的文件擴展名來請求特定的響應,user/4.html =>發送html,user/4 =>發送json。