Ecco un esempio di lavoro di base ...
Passaggio 1: Creare l'applicazione Phoenix
ad esempio, exjson per ExampleJson o qualsiasi altro nome vostro simile
mix phoenix.new exjson --no-ecto --no-brunch --no-html
Fase 2: impostare il router
Aggiungere questo ambito al web/file di router.ex
scope "/api/v1", Exjson do
pipe_through :api
resources "/users", UserController
end
Fase 3: Mettere i dati finti qualche ac cessibili al app
priv/data/MOCK_DATA.json
Fase 4: Impostare l'UsersController
Pensate Controller utenti ad avere una serie di azioni (funzioni) dove il conn struct viene immessa dal punto finale Phoenix insieme a tutti parametri
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
Fase 5: Configurare l'UsersView
Si può anche pensare degli utenti Vedi come con funzioni che renderanno i dati ricevuti dal controller in modo appropriato. In questo caso, stai utilizzando i dati JSON così phoenix ha alcune funzioni incorporate per aiutarti.
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
Quindi, vuoi solo prendere in giro la risposta per iniziare rapidamente e sostituirla con un'implementazione "reale" in seguito? Questo non deve essere pronto per la produzione, immagino? –
@PatrickOscity si, esattamente. –