如需藍圖的概念概觀,請參閱概念 > 藍圖。
啟用/停用藍圖路由的流程會根據您關注的藍圖路由類型(RESTful 路由、快捷路由或動作路由)而略有不同。有關不同藍圖類型的討論,請參閱藍圖路由文件章節。
若要變更藍圖路由,我們建議明確設定自訂路由。同樣地,如果您想要覆寫藍圖動作,我們建議編寫您自己的自訂動作。
但如果您真的知道自己在做什麼,請繼續閱讀
若要覆寫單一模型的 RESTful 藍圖路由,只需在相關的控制器檔案(或相關資料夾中的獨立動作)中建立一個具有適當名稱的動作:find、findOne、create、update、destroy、populate、add 或 remove。
如果您想為所有模型覆寫特定的藍圖,請查看sails-hook-custom-blueprints 外掛程式。重要的是要意識到,即使您沒有自己定義這些,只要在您的藍圖配置中啟用動作或快捷藍圖,Sails 也會以 JSON API 的形式(包括對排序、分頁和篩選的支援)回應每個模型的內建 CRUD 邏輯。
由於虛擬請求解釋器,藍圖 API 與 WebSockets 相容(您的任何自訂動作和策略也是如此)。有關範例用法,請查看瀏覽器 SDK 上的參考章節(參考 > WebSockets > sails.io.js)。
.subscribe()
預設情況下,當使用 socket 請求時,Find 和 Find One 藍圖動作將自動呼叫 .subscribe()
。這會將請求 socket 訂閱到每個傳回的記錄。但是,如果同一個 socket 使用 io.socket.put()
(例如)向 Update 或 Destroy 動作發送請求,則預設情況下不會向請求 socket 發送訊息,而是發送給其他已連線、已訂閱的 socket。這樣做的目的是允許 UI 程式碼使用客戶端 SDK 的回呼來單獨處理伺服器回應,例如替換載入指示器。
預設情況下,find 藍圖動作(透過 WebSocket 請求觸發時)將使請求 socket 訂閱關於正在建立的該模型新實例的通知。可以透過將 sails.config.blueprints.autoWatch
設定為 false
來變更所有模型的此行為。
以下技術僅為了相容性原因而支援。請僅使用自訂路由,無論您是否正在使用藍圖動作!
如果您正在使用控制器而不是獨立動作檔案,則可以透過在您的控制器定義中定義 _config
鍵,在每個控制器的基礎上停用config/blueprints.js
中的某些設定
// In /api/controllers/PetController.js
module.exports = {
_config: {
actions: false,
shortcuts: false,
rest: false
}
}
不支援在每個控制器的基礎上停用
shortcuts
樣式的自動路由。這從來都不是必要的,因為您永遠不應在生產環境中使用shortcuts: true
。