phoenix 開發API系列(一)建立簡單的http api

安裝 phoenix framework

安裝 phoenix 很簡單:前端

mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez

安裝以後,mix 的子命令中就多了 phoenix 相關的內容了。node

$ mix help | grep phoenix
$ mix local.phoenix     # Updates Phoenix locally
$ mix phoenix.new       # Creates a new Phoenix v1.2.1 application

phoenix 工程介紹

接下來,咱們建立一個 phoenix 的工程。git

$ 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 文件夾,其餘的件暫時不用理會。github

建立 http api

接下來,使用 phoenix 實際建立一個簡單的 api 來感覺一下。 首先,增長一個 controller,其中是api的具體實現代碼web

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, 只要增長以下代碼便可。json

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結果api

{
  "hello": "world"
}

總結

Web app的先後端分離是趨勢,phoenix framework 雖然是相似 RoR 的全棧 web framework, 只用它來開發api也是不錯的選擇。 用它來開發 api,咱們能夠暫時不關心 view 和 template 部分,將重點放在 controller 和 router 上。瀏覽器

來源:http://blog.iotalabs.io/

相關文章
相關標籤/搜索