【发布时间】:2018-08-28 00:11:50
【问题描述】:
我无法理解如何正确处理凤凰视图。 假设客户端正在调用“login_user”api。 我的控制器将处理请求,检查用户是否可以访问。作为回应,我需要将用户的数据发送给调用者。 现在,在控制器的登录逻辑之后,正确的响应方式是什么?
1) 获取控制器内部调用者所需的所有数据:
user_data = function_that_fetch_user_data()
conn
|> put_resp_header("content-type", "application/json")
|> put_status(:ok)
|> send_resp(Status.code(:ok), user_data)
2) 渲染视图
conn
|> put_resp_header("content-type", "application/json")
|> put_status(:ok)
|> render(login.json, user)
并在其中获取数据
defmodule CryptomonitorWeb.UserView do
use MyAppWeb, :view
def render("login.json", user) do
token = generate_user_token(user.mail)
%{
token: token,
email: user.mail,
group: "operators"
}
end
end
直接在控制器中获取数据并构建我的响应对我来说更加清晰和干净,但我想知道处理 api 响应的“正确”方法是什么。我的应用程序通常只会返回 json 给客户端,有时会渲染一些 html 页面。
【问题讨论】:
标签: rest api elixir phoenix-framework