phoenix elixir 框架簡單試用

備註:
  官方提供的腳手架工具,咱們能夠直接使用,生成代碼,同時須要nodejs 環境配置(比較簡單,參考
相關資料便可)
 1. 安裝腳手架
mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
2. 生成基本項目
mix phx.new hello
項目代碼結構以下:

├── README.md
├── brunch-config.js
├── config
│   ├── config.exs
│   ├── dev.exs
│   ├── prod.exs
│   ├── prod.secret.exs
│   └── test.exs
├── http
│   ├── get.http
│   ├── post.http
│   └── put.http
├── lib
│   ├── hello
│   │   ├── endpoint.ex
│   │   └── repo.ex
│   └── hello.ex
├── mix.exs
├── mix.lock
├── package.json
├── priv
│   ├── gettext
│   │   ├── en
│   │   │   └── LC_MESSAGES
│   │   │       └── errors.po
│   │   └── errors.pot
│   ├── repo
│   │   ├── migrations
│   │   │   └── 20180417133336_create_user.exs
│   │   └── seeds.exs
│   └── static
│       ├── css
│       │   ├── app.css
│       │   └── app.css.map
│       ├── favicon.ico
│       ├── images
│       │   └── phoenix.png
│       ├── js
│       │   ├── app.js
│       │   └── app.js.map
│       └── robots.txt
├── test
│   ├── channels
│   ├── controllers
│   │   └── page_controller_test.exs
│   ├── models
│   ├── support
│   │   ├── channel_case.ex
│   │   ├── conn_case.ex
│   │   └── model_case.ex
│   ├── test_helper.exs
│   └── views
│       ├── error_view_test.exs
│       ├── layout_view_test.exs
│       └── page_view_test.exs
├── web
│   ├── channels
│   │   └── user_socket.ex
│   ├── controllers
│   │   ├── democontroller.ex
│   │   ├── page_controller.ex
│   │   └── usercontroller.ex
│   ├── gettext.ex
│   ├── models
│   │   └── user.ex
│   ├── router.ex
│   ├── static
│   │   ├── assets
│   │   │   ├── favicon.ico
│   │   │   ├── images
│   │   │   │   └── phoenix.png
│   │   │   └── robots.txt
│   │   ├── css
│   │   │   ├── app.css
│   │   │   └── phoenix.css
│   │   ├── js
│   │   │   ├── app.js
│   │   │   └── socket.js
│   │   └── vendor
│   ├── templates
│   │   ├── layout
│   │   │   └── app.html.eex
│   │   ├── page
│   │   │   ├── appdemo.html.eex
│   │   │   └── index.html.eex
│   │   └── user
│   │       └── index.html.eex
│   ├── views
│   │   ├── demoview.ex
│   │   ├── error_helpers.ex
│   │   ├── error_view.ex
│   │   ├── layout_view.ex
│   │   ├── page_view.ex
│   │   └── userview.ex
│   └── web.ex
└── yarn.lock
3.  代碼說明
備註: 代碼添加了一個簡單的rest demo ,參考 web/controllers/democontroller.ex
a. 初始化項目處理:
 a. mix deps.get
 b. mix ecto.create && mix ecto.migrate
 c. npm install
 d. mix phoenix.server  or mix phx.server
b. 代碼 controller 

比較簡單
defmodule Hello.DemoController do
   use Hello.Web, :controller
   def show(conn,params) do
     render conn, "index.json",params
   end

   def index(conn,params) do
    render conn, "index.json",params
   end

   def app(conn,params) do
    render conn, "app.json",params
   end

   def create(conn, params) do
    render conn, "create.json",params
   end

   def update(conn,params) do
    render conn, "update.json",params
   end
end


c. 代碼  view  (就是簡單的數據返回)

defmodule Hello.DemoView do
  use Hello.Web, :view
  def render("index.json", _params) do
    %{
      name: "dalong",
      age: 444
    }
  end
  def render("create.json", _params) do
    [
      %{
        name:  "update",
        age: 333,
      }
     ]
  end
  def render("update.json", _params) do
    [
      %{
        name: "appdemo",
        age: 444
      },
      %{
        name: "aaaaaa",
        age: 5
      },
      %{
        name: "dalaaaong",
        age: 44
      },
      %{
        name: "dalong",
        age: 2
      }
     ]
  end
  def render("app.json",_params) do
   [
    %{
      name: "appdemo",
      age: 444
    },
    %{
      name: "aaaaaa",
      age: 5
    },
    %{
      name: "dalaaaong",
      age: 44
    },
    %{
      name: "dalong",
      age: 2
    }
   ]
  end
end

d. router  (配置api 訪問)
  web/router.ex

  scope "/api", Hello do
    pipe_through :api
    resources "/demo" , DemoController
  end
4. 啓動測試
項目使用了一個vscode 插件http 能夠直接模擬使用,或者參考README.md
mix phx.server
a. post
http://localhost:4000/api/demo

curl --request POST \ --url http://localhost:4000/api/demo \ --header 'content-type: application/json' \ --data '{"name": "sample","time": "Wed, 21 Oct 2015 18:27:50 GMT"}' b. put http://localhost:4000/api/demo/demoid curl --request PUT \ --url http://localhost:4000/api/demo/appdemo \ --header 'content-type: application/json' \ --data '{"name": "sample","time": "Wed, 21 Oct 2015 18:27:50 GMT"}' c. get http://localhost:4000/api/demo curl --request GET \ --url http://localhost:4000/api/demo
5. 參考資料
https://github.com/rongfengliang/phoenix-rest-demo
https://hexdocs.pm/phoenix/Phoenix.Router.html#resources/4
相關文章
相關標籤/搜索