问题标签 [plug]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
542 浏览

elixir - 如何将请求参数填充到 Plug.Conn 连接中?

我正在尝试测试一个接收Plug.Conn类型的连接的方法,但我找不到使用Plug.ConnAPI 使用请求参数初始化连接的方法。

例如:

有没有办法在连接中设置这些参数?

0 投票
2 回答
226 浏览

elixir - 如何在 Phoenix 中使用 2 个身份验证插件?

我的应用中有两个用户,买家和管理员,他们都有不同的登录详细信息,管理员使用电子邮件和密码登录,买家使用他们的电话号码和我们发送给他们的代码登录。所以,我做了两个认证插件。这是我将插件添加到浏览器管道的方式:

所以问题来了,当管理员登录时,他们得到登录菜单,他们可以访问所有其他页面。当买家登录时,我可以从日志中看到(我 IO.inspect 连接,所以我知道他们已经登录),他们仍然得到“退出”菜单,他们也无法访问某些页面。如果我将管道顺序更改为 AffirmWeb.BuyerAuth 排在最后,那么现在买家可以访问其他页面而管理员无法访问。关于如何解决这个问题的任何指导?

0 投票
2 回答
680 浏览

routing - 有没有办法让凤凰插头只用于一条路线?

在凤凰城,我的路线如下:

但是我想为最后一条路线(POST)设置一个插头。

我将如何使用当前的工具来解决这个问题?

0 投票
1 回答
230 浏览

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

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

0 投票
1 回答
310 浏览

json - 编写自定义插件,它可以处理并返回正文中格式错误的 JSON 的正确错误

我正在尝试编写一个插件,如果请求的 JSON 格式错误,这将生成一个自定义错误,这在我们的场景中很常见(因为我们在邮递员中使用变量。例如,有时值之外没有引号,它会导致格式错误JSON)。我得到的唯一帮助是https://groups.google.com/forum/#!topic/phoenix-talk/8F6upFh_lhc这当然不起作用。

这条线

如何正确阅读和解析正文。我知道在 POST 中,我们总是会收到 format=JSON 请求

问题:问题是正文只能读取一次。如果我之前在自定义插件中阅读过,Plug.Parses 将无法找到正文

0 投票
0 回答
352 浏览

vim - ohmyzsh - 不是编辑器命令:Plug

我正在尝试设置我的终端。我的.vimrc文件正常工作,我能够看到所有插件。

但是,在我安装后,我ohmyzsh收到以下错误。

这就是我的.vimrc文件的外观。

0 投票
1 回答
77 浏览

elixir - 在浏览器 Elixir 中下载分块文件失败

显然,我似乎缺少要在代码中添加的内容。我正在发送分块的 HTTP 响应和内容类型text/csv,因此如果我在浏览器中打开它,它应该会下载。但它无法下载,我不知道它的解决方案,因为我正在学习长生不老药。这是我正在尝试的代码。你能帮我解决这个问题吗?

邮差

邮递员截图

铬合金

铬截图

0 投票
1 回答
633 浏览

phoenix-framework - 从/在 Phoenix 框架中提供静态 html(和其他)

我正在使用 Phoenix 框架实现的 API 服务器。JSON API 由/api/<version>URL 提供。服务器还需要提供来自 的静态.html (和其他,,.css.js)文件/:它实际上是一个用另一种语言开发并编译成 HTML5、JS 和 CSS 的小型 SPA。行为应该是:

  • /应该送达index.html文件;
  • /some/file.html如果路径存在,则应该file.htmlsome目录中提供文件,如果不存在,则为 404;
  • 像这样的 URL/some/应该发回 403 或 404 以防止目录列表
  • 下面的一切/api都由专用控制器管理。

生成项目mix phx.new --no-ecto --no-html --no-gettext --no-webpack static 以摆脱.css.js文件和模板。我还priv/static为静态资产创建了一个目录。

我必须从 in 的参数列表中删除,only: ~w(css fonts images js favicon.ico robots.txt)才能在根 URL 处提供文件。除错误外,一切正常:plug Plug.Staticendpoint.ex

  • 上的请求/显示带有日志的 Phoenix 错误页面[debug] ** (Phoenix.Router.NoRouteError) no route found for GET / (StaticWeb.Router)。我添加了 {:plug_static_index_html, "~> 1.0"}所以我摆脱了这个问题,但调用会/subdir发回 Phoenix 错误页面。我只是不知道在哪里以及如何告诉 Phoenix 发回 403 或 404(除了/)。
  • 在非退出文件上调用 URL 不会返回 404,而是返回 Phoenix 错误页面。我试图在其中创建一个static管道,router.ex但似乎流程没有到达那里。文档指出:如果找不到静态资产,Plug.Static只需将连接转发到管道的其余部分。我看不到将 404 回复放在哪里

这是我尝试的两种配置:

配置我

会议二

我删除了所有关于静态内容的东西,endpoint.ex并在其中添加了一个static管道router.ex

任何提示都会有所帮助。

2020 年 8 月 13 日更新

"/"在末尾添加了一条关于范围的全部规则router.ex,至少对于任何错误请求我都会收到 404。我只是想知道这一切有多干净......

0 投票
1 回答
378 浏览

elixir - 您如何在 Phoenix 框架中运行中间件函数后响应?

我正在与 Phoenix 一起在 Elixir 中开发一个简单的网站。我想添加一些在生成响应后运行的自定义中间件。例如,为了记录每个响应中的总字节数,我想要一个这样的 Plug

尝试在路由器中的一个 Phoenix 管道中使用这个插件是行不通的,它们都在响应呈现之前运行。相反,它会导致一个FunctionClauseErrorsince conn.resp_bodyis nil。我不确定如何使用此插件,以便在呈现响应后运行它。

0 投票
1 回答
120 浏览

elixir - 处理请求后运行插件管道

Plugs 管道是构建应用程序的绝佳方式。目前虽然我只在请求到达控制器之前应用管道来过滤/格式化数据。有没有办法在处理每个视图后应用管道运行?我有一个 JSON api,我在每个视图渲染函数上运行两个数据转换。

有没有更简洁的方法来处理这个问题,或者这是我只需要在我的视图模块中的每个渲染函数上做的事情?

更新

正如@sabiwara 指出的那样,有register_before_send回调。我已经尝试为我的用例实现它,但似乎回调更多的是用于记录而不是操纵响应。

我试过了

conn.resp_body是我尝试将其转换为地图但仍然不行的列表。