在凤凰城创建新路线

时间:2018-12-04 15:44:19

标签: api routes elixir phoenix-framework

我在Phoenix有一个应用程序,并且我使用PostgreSQL作为数据库。在我的数据库中,我有一个名为“ Device_Token”的表,该表存储了有人访问移动应用程序时创建的令牌。我需要在API中创建一条返回此令牌的新路由,以便可以在我的React Native代码中获取它。

我在router.ex文件中创建了一条新路由,如下所示:

get "/device_token", UserController, :device_token

然后,我需要在usercontroller.ex文件中创建一个返回令牌代码的名为“ device_token”的函数。我认为是类似下面的代码,但是我知道这是不对的。有人可以帮助我吗?如果您需要更多信息,请告诉我。

def device_token(conn, _params) do
    device_token = Repo.get(DeviceToken, id)
    render(conn, "device_token.json", device_token: device_token)
end

1 个答案:

答案 0 :(得分:2)

这些phoenix docs向您展示了如何呈现json而不是html页面,因此您可以执行以下操作:

router.ex:

get  "/token/:id", UserController, :token

user_controller.ex:

  def token(conn, %{"id" => id}) do
    token = Repo.get(DeviceToken, id)     
    render(conn, "show.json", token: token)
  end

user_view.ex:

defmodule HelloWeb.PageView do
  use HelloWeb, :view

  def render("show.json", %{token: token}) do
    %{data: %{device_token: token} }
  end

end