安裝 phoenix framework 安裝 phoenix 很簡單: 安裝之後,mix 的子命令中就多了 phoenix 相關的內容了。 phoenix 工程介紹 接下來,我們創建一個 phoenix 的工程。 phoenix 是個完整的 web 框架,包括 controller,view以及m ...
安裝 phoenix framework
安裝 phoenix 很簡單:
mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez
安裝之後,mix 的子命令中就多了 phoenix 相關的內容了。
$ mix help | grep phoenix
$ mix local.phoenix # Updates Phoenix locally
$ mix phoenix.new # Creates a new Phoenix v1.2.1 application
phoenix 工程介紹
接下來,我們創建一個 phoenix 的工程。
$ mix phoenix.new phoenix_api --no-ecto # 本示例中不帶資料庫的操作,所以加上 --no-ecto 參數
$ cd phoenix_api # 創建完之後進入工程目錄
$ tree -L 1 . # 查看目錄結構
.
├── README.md
├── _build
├── brunch-config.js
├── config
├── deps
├── lib
├── mix.exs
├── mix.lock
├── node_modules
├── package.json
├── priv
├── test
└── web # 主要的代碼都要這裡
phoenix 是個完整的 web 框架,包括 controller,view以及model,template等等,但是我們這裡只用 phoenix 作為 api 的後端,所以前端相關的內容就不介紹了。 用 phoenix 作為 api 的後端,主要關註 web/router.ex 文件和 web/controllers 文件夾,其他的件暫時不用理會。
創建 http api
接下來,使用 phoenix 實際創建一個簡單的 api 來感受一下。 首先,增加一個 controller,其中是api的具體實現代碼
defmodule PhoenixApi.HelloController do
use PhoenixApi.Web, :controller
def hello(conn, _params) do
json conn, %{"hello": "world"}
end
end
新增的 controller 路徑: web/controllers/hello_controller.ex
controller 增加了之後,再在 web/router.ex 中增加一個指向 controller 中 hello 方法的路由, web/router.ex 已經有了針對 api 的 pipeline, 只要增加如下代碼即可。
scope "/api", PhoenixApi do
pipe_through :api
get "/hello", HelloController, :hello
end
然後啟動 phoenix server, 在工程根目錄下執行:
$ mix phoenix.server
Compiling 7 files (.ex)
[info] Running PhoenixApi.Endpoint with Cowboy using http://localhost:4000
26 Aug 16:43:04 - info: compiled 6 files into 2 files, copied 3 in 1.2 sec
最後在瀏覽器中訪問 http://localhost:4000/api/hello 可以看到返回的JSON結果
{
"hello": "world"
}
總結
Web app的前後端分離是趨勢,phoenix framework 雖然是類似 RoR 的全棧 web framework, 只用它來開發api也是不錯的選擇。 用它來開發 api,我們可以暫時不關心 view 和 template 部分,將重點放在 controller 和 router 上。