查看來源 mix phx.gen.json (Phoenix v1.7.14)
為 JSON 資源產生控制器、JSON 檢視和內容。
mix phx.gen.json Accounts User users name:string age:integer
第一個引數是內容模組,其次是架構模組和其複數名稱(用於架構資料庫名稱)。
內容是 Elixir 模組,作為給定資源的 API 邊界。一個內容通常包含許多相關資源。因此,如果內容已經存在,它將增加給定資源的函式。
注意:資源也可以分割為不同的內容(例如
Accounts.User
和Payments.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.ex
和 lib/app_web/controller/sales/user_json.ex
。
自訂情境、架構、表格和遷移
在某些情況下,你可能想要啟動 JSON 檢視、控制器和控制器測試,但自行保留情境或架構的內部實作。你可以使用 --no-context
和 --no-schema
標誌,以控制檔案產生。
你也可以變更表格名稱或設定遷移,以使用二進位 ID 作為主鍵,進一步的資訊請參閱 mix phx.gen.schema
。