Oto prosty przykład działa ...
Krok 1: Tworzenie aplikacji Phoenix
np exjson dla ExampleJson lub cokolwiek nazwa Twojego jak
mix phoenix.new exjson --no-ecto --no-brunch --no-html
Krok 2: Konfiguracja routera
Dodaj ten zakres do pliku web/router.ex
scope "/api/v1", Exjson do
pipe_through :api
resources "/users", UserController
end
Krok 3: Włóż dane makiety gdzieś ac cessible do aplikacji
priv/data/MOCK_DATA.json
Krok 4: Skonfiguruj UsersController
Pomyśl o kontrolerze użytkowników jako posiadające szereg działań (funkcji) gdzie conn struct doprowadza się z końcowego phoenix wraz z wszelkimi parametrów
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
Krok 5: Konfigurowanie UsersView
można również pomyśleć o użytkownikom wyświetlanie jako o funkcji, które będzie świadczyć dane otrzymane z kontrolera w odpowiedni sposób. W tym przypadku używasz danych json, więc phoenix ma wbudowane funkcje, które mogą Ci w tym pomóc.
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
Po prostu chcesz kpić z reakcji, aby szybko zacząć, i zastąpić ją "prawdziwą" implementacją później? To chyba nie musi być produkcja gotowa? –
@PatrickOscity tak, dokładnie. –