luk*_*mas 2 elixir phoenix-framework plug
我\xe2\x80\x99m 在获取一个简单的示例时遇到一些问题。I\xe2\x80\x99m 不使用 Phoenix FWIW,只需插入
\n\ndefmodule 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\nRun Code Online (Sandbox Code Playgroud)\n\n这是一个愚蠢的例子,但我\xe2\x80\x99m只是想看看它是否会像我认为的那样工作。
\n\n我希望 Plug 能够处理引发的异常GET /boom并返回 401 状态
但是,当我尝试GET /boom返回 500 状态时,显然异常是由 Plug 处理的 \xe2\x80\x99t
use Plug.ErrorHandler如果您想捕获这些异常并根据引发的异常发送 HTTP 状态代码,则需要添加:
defmodule Foo do
use Plug.Router
use Plug.ErrorHandler
...
end
Run Code Online (Sandbox Code Playgroud)
通过此更改,我得到了正确的响应:
$ curl -i http://localhost:4000/boom
HTTP/1.1 401 Unauthorized
server: Cowboy
date: Wed, 17 May 2017 19:59:57 GMT
content-length: 20
cache-control: max-age=0, private, must-revalidate
Something went wrong
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1781 次 |
| 最近记录: |