这是一个基本的工作示例......
第 1 步:创建凤凰应用程序
例如,Exjson for ExampleJson 或任何你喜欢的名字
mix phoenix.new exjson --no-ecto --no-brunch --no-html
第二步:设置路由器
将此作用域添加到 web/router.ex 文件中
scope "/api/v1", Exjson do
pipe_through :api
resources "/users", UserController
end
第 3 步:将模拟数据放在应用程序可访问的位置
priv/data/MOCK_DATA.json
第 4 步:设置用户控制器
将用户控制器视为具有许多操作(功能)
conn struct 从您的凤凰端点与任何
参数
defmodule Exjson.UserController do
use Exjson.Web, :controller
# GET http://localhost:4000/api/v1/users/
def index(conn, _params) do
users = File.read!(file) |> Poison.decode!()
render conn, users: users
end
# GET http://localhost:4000/api/v1/users/1
def show(conn, params) do
users = File.read!(file) |> Poison.decode!()
render conn, user: users |> Enum.find(&(&1["id"] === String.to_integer(params["id"])))
end
defp file() do
Path.join(:code.priv_dir(:exjson), "data/MOCK_DATA.json")
end
end
第 5 步:设置用户视图
您还可以将用户视图视为具有以适当方式呈现从控制器接收的数据的功能。在这种情况下,您使用的是 json 数据,因此 phoenix 有一些内置函数来帮助解决这个问题。
defmodule Exjson.UserView do
use Exjson.Web, :view
def render("index.json", %{users: users}) do
render_many(users, __MODULE__, "user.json")
end
def render("show.json", %{user: user}) do
render_one(user, __MODULE__, "user.json")
end
def render("user.json", %{user: user}) do
%{
id: user["id"],
name: user["name"],
email: user["email"]
}
end
end