查看來源 mix phx.gen.json (Phoenix v1.7.14)

為 JSON 資源產生控制器、JSON 檢視和內容。

mix phx.gen.json Accounts User users name:string age:integer

第一個引數是內容模組,其次是架構模組和其複數名稱(用於架構資料庫名稱)。

內容是 Elixir 模組,作為給定資源的 API 邊界。一個內容通常包含許多相關資源。因此,如果內容已經存在,它將增加給定資源的函式。

注意:資源也可以分割為不同的內容(例如 Accounts.UserPayments.User)。

架構負責將資料庫欄位對應到 Elixir 結構。其後是一個選配的屬性清單,包含其各自的名稱和類型。如需有關屬性的更多資訊,請參閱 mix phx.gen.schema

總的來說,這個產生器將新增下列檔案到 lib/

  • accounts API 的 lib/app/accounts.ex 中的內容模組
  • lib/app/accounts/user.ex 中的架構,其 users 資料表
  • lib/app_web/controllers/user_controller.ex 中的控制器
  • 與控制器同置的 JSON 檢視,位於 lib/app_web/controllers/user_json.ex

也會產生儲存庫的遷移檔案和內容和控制器功能的測試檔案。

API 前置詞

預設情況下,將為 API 路徑產生「/api」前置詞。這可以透過產生器的 :api_prefix 組態自訂

config :your_app, :generators,
  api_prefix: "/api/v1"

內容 app

在雨傘應用程式中網路檔案(控制器、json 檢視等)的位置會根據位在應用程式 :generators 組態中的 :context_app 設定而有所不同。設定時,Phoenix 產生器會直接在你的 lib 和測試資料夾中產生網路檔案,因為應用程式假設是只負責特定網路功能。如果未設定 :context_app,產生器會將網路相關 lib 和測試檔案放置在 web/ 目錄,因為應用程式假設會處理網路和特定網域功能。範例組態

config :my_app_web, :generators, context_app: :my_app

或者,可以提供 --context-app 選項給產生器

mix phx.gen.json Sales User users --context-app warehouse

網路命名空間

預設情況下,控制器和 JSON 檢視會依架構名稱命名空間。你可以傳遞 --web 標誌來自定義 웹模組命名空間,並使用模組名稱,例如

mix phx.gen.json Sales User users --web Sales

它將會產生 lib/app_web/controllers/sales/user_controller.exlib/app_web/controller/sales/user_json.ex

自訂情境、架構、表格和遷移

在某些情況下,你可能想要啟動 JSON 檢視、控制器和控制器測試,但自行保留情境或架構的內部實作。你可以使用 --no-context--no-schema 標誌,以控制檔案產生。

你也可以變更表格名稱或設定遷移,以使用二進位 ID 作為主鍵,進一步的資訊請參閱 mix phx.gen.schema