标签: plug

Plug.Exception 如何工作?

我\xe2\x80\x99m 在获取一个简单的示例时遇到一些问题。I\xe2\x80\x99m 不使用 Phoenix FWIW,只需插入

\n\n
defmodule Unauthorized do\n  defexception message: "not authorized", plug_status: 401\nend\n\ndefmodule Foo do\n  use Plug.Router\n  plug :match\n  plug :dispatch\n\n  get "/" do\n    send_resp(conn, 200, "heyyyo")\n  end\n\n  get "/boom" do\n    raise Unauthorized\n  end\n\n  match _ do\n    send_resp(conn, 404, "not found")\n  end\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是一个愚蠢的例子,但我\xe2\x80\x99m只是想看看它是否会像我认为的那样工作。

\n\n

我希望 Plug 能够处理引发的异常GET /boom并返回 401 状态

\n\n

但是,当我尝试GET /boom返回 500 状态时,显然异常是由 Plug 处理的 \xe2\x80\x99t

\n

elixir phoenix-framework plug

2
推荐指数
1
解决办法
1781
查看次数

Plug 路由器是否需要匹配/调度管道?

我有一个路由器模块,可以将请求转发到其他路由器。在这个路由器中,我有一个由plug(:match)和组成的管道plug(:dispatch)

defmodule Example.Router do
  use Plug.Router

  plug(:match)
  plug(:dispatch)

  forward("/check", to: Example.Route.Check)

  get("/", do: send_resp(conn, 200, "router"))
end
Run Code Online (Sandbox Code Playgroud)

在第二个模块中,我有相同的管道:

defmodule Example.Route.Check do
  use Plug.Router

  plug(:match)
  plug(:dispatch)

  get "/", do: send_resp(conn, 200, "ok")
end
Run Code Online (Sandbox Code Playgroud)

我在这里看到的问题是我似乎总是需要plug(:match)并且plug(:dispatch)在所有Plug路由器中。所以我有以下问题:

  1. 这真的有必要吗?
  2. 是否所有路由器都需要在具有路由的同一文件中具有管道?

elixir plug

1
推荐指数
1
解决办法
412
查看次数

Phoenix 1.4如何在插件中为Routes.page_path加上别名

我尝试了几次不同的迭代,但是在编译时始终出现此错误:

Routes.session_path/2 is undefined (module Routes is not available)
Run Code Online (Sandbox Code Playgroud)

我的代码:

Routes.session_path/2 is undefined (module Routes is not available)
Run Code Online (Sandbox Code Playgroud)

在Phoenix 1.4中有所不同,尝试在此处参考文档https://hexdocs.pm/phoenix/Phoenix.Router.html,但仍然没有运气。

elixir phoenix-framework plug

1
推荐指数
1
解决办法
362
查看次数

POST后使用plug_cowboy(2.0)进行重定向

我有一个简单的即插即用处理程序

post "/some/url" do
   # do something
   # render(something)
end
Run Code Online (Sandbox Code Playgroud)

…但是我想以某种方式重定向到另一个get处理程序,而不是呈现html。

如何使用plug_cowboy 2.0做到这一点?

elixir plug

1
推荐指数
1
解决办法
55
查看次数

如何自定义 Plug.Parsers JSON 解码器的选项?

使用Plug.Parsers,可以配置用于解析 JSON 请求的模块:

plug Plug.Parsers,
  parsers: [:json],
  json_decoder: Jason
Run Code Online (Sandbox Code Playgroud)

但是,使用此语法Jason.decode!/2会使用空opts参数进行调用。

怎样才能给指定的选项提供呢json_decoder?例如,我想将keys: :atoms选项传递给Jason.decode!/2.

elixir json-deserialization plug

0
推荐指数
1
解决办法
791
查看次数

不使用 pheonix 时启用开发热重载的最佳方法是什么?

所以我正在学习 Elixir 和 Pheonix 看起来太多而无法开始学习,所以我使用 Plug and Poison 制作了一个简单的 JSON Rest API,但要查看任何更改,我需要停止服务器并mix run --no-halt再次运行。我来自nodeJS,它只nodemon跟踪依赖于根模块的所有文件,并在看到任何更改时重新加载整个服务器。有没有类似的 mix 或 Elixir 的东西?我知道您可以使用 OTP 重新加载代码的特定部分,如果我的服务器在保存时执行此操作,那就最好了,但现在我只想更快地响应我所做的事情。有人能指出我正确的方向吗?

elixir-mix elixir plug

0
推荐指数
1
解决办法
1209
查看次数