问题标签 [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 投票
3 回答
2193 浏览

terminal - Phoenix:如何在控制台中获取 conn %Plug.Conn{}

我想在 iex 终端做一些快速测试,但是有些函数需要 struct %Plug.Conn{} 作为参数,例如我想得到表达式的结果:

但我有错误:

有没有一种在控制台中获取 conn struct 的简单方法?

0 投票
2 回答
923 浏览

elixir - Elixir 将参数传递到 Plug 以获取先前的 plug 参数

这可能不是 Breadcrumbable 问题,但是如何将先前插件中的参数传递到面包屑中?例如,如果之前的插件set_merchant将商家设置为conn.params.merchant,我如何将其传递id给面包屑?

......

conn.params.merchant_id是我想从第一个插件传递参数的地方set_merchant

0 投票
1 回答
406 浏览

elixir - Elixir Plug gzip不适用于png

我有

并且我的js csssvg文件正在提供,content-encoding:gzip但我的 png 文件以相同的方式提供,但不是。

这是一个 svg 的示例及其 gzip 压缩方式:

在此处输入图像描述

这是一个png

在此处输入图像描述

0 投票
1 回答
82 浏览

elixir - 为什么 Elixir Plug 使用宏将插件编译成 AST?

正如代码https://github.com/elixir-plug/plug/blob/v1.5.0/lib/plug/builder.ex#L183所示,插件定义将在宏扩展阶段编译为 AST。但为什么?为什么不只保留插件定义并使用Enum.reduce_while或递归来一一调用插件?

0 投票
0 回答
88 浏览

http-headers - Elixir Plug 为特定文件配置

我通过以下方式plug在我的模块中定义了一个:App.Endpoint

一切都按预期工作,只是没有申请这个插件/js/app.js

我目前不能只提供/js/app.js,而是只能指定js哪个将提供/js目录中的所有文件。

如何仅指定此js/app.js文件而不指定其他文件?

我努力了

但我总是收到 404/js/app.js

0 投票
1 回答
259 浏览

testing - 如何在 Phoenix 中测试使用 HEAD 的控制器方法

目前,文档中的常用HTTP动词清晰且充满活力,但我们HEAD今天开始实施一些路线,并且测试方式与其他路线不同。

测试说一个GET方法:

conn = get conn, controller_path(conn, :controller_method, params)

因此,我假设您只是更改gethead,但事实并非如此。

这是我的路线:

template_journeys_count_path HEAD /v1/templates/:template_id/journeys GondorWeb.V1.JourneyController :count

和我的控制器方法:

def count(conn, %{"template_id" => template_id}) do count = Templates.get_journey_count(template_id) conn |> put_resp_header("x-total-count", count) |> send_resp(204, "") end

和我的测试:

conn = head conn, template_journeys_count_path(conn, :count, template.id) assert response(conn, 204)

但是我收到一条错误消息,说没有收到回复,并且resp_header我添加了未添加的内容conn.resp_headers

我错过了什么吗?Plug.ConnTest我还尝试使用将方法build_conn传递给它的方法来建立连接HEAD,但仍然没有运气。

0 投票
2 回答
1298 浏览

elixir - 如何将流量从 Http 重定向到负载均衡器上用于 SSL 的 Phoenix Elixir 中的 Https?

我需要将流量从 Http 转发到 Https,SSL 在负载均衡器上,所以我需要做的就是使用我添加的plug_sslso转发标头:prod.exs

在我的prod.exs并删除其他所有内容config :web, Web.Endpoint

它不起作用。

我究竟做错了什么?

我需要把force_ssl我的router

先感谢您。

0 投票
0 回答
76 浏览

elixir - 如何为不同的控制器定义不同的文件上传限制?

我的 Phoenix 应用程序中有 2 个页面,它们需要不同的文件上传大小限制(一页可以使用默认的 8MB 限制,但第二页需要更高的限制)。

从文档中,我可以增加 MyApp.Endpoint 模块中的限制,如下所示:

但此设置是站点范围的。我尝试将整个解析器插件直接移动到控制器,但是在提交表单时出现错误

所以我假设在路由器之前需要解析器插件。我还尝试仅将 :multipart 解析器移动到控制器,但这会导致相同的错误。

有任何想法吗?

0 投票
1 回答
940 浏览

elixir - 在 Elixir/Phoenix 中解析多部分/混合请求的 json 部分

我正在编写一个 Elixir/Phoenix json API 后端,并希望一个端点在单个请求中接收多个图像文件以及一些 json 格式的属性。我为此使用了multipart/mixed内容类型,这就是我的 cURL 请求的样子。

在我的控制器操作中,我收到了整齐解析的文件,但我的 json 部分未解析。

这是一个似乎相关的讨论,WIP: How to parse multipart form with JSON field #570。很明显,application/json不应期望部件的解析会自动发生。相反,最后一条消息建议使用自定义正文阅读器来执行任何额外的解析。

这种解释是否正确,或者是否有另一种方法来处理multipart/mixed有效负载,以便任何源自application/json部件的参数都可以在已经解析的控制器操作中使用?


一个侧面问题

让我感到困惑的是,上面的解析发生了,我什至不必使用Plug.Parsers. 从我读到的内容来看,获取解析的多部分有效负载应该需要以下内容。

无论这个插头是否存在于管道中,我都会得到相同的结果。它可能默认存在,但我想确认一下。

我正在使用 Elixir 1.6.5、Phoenix 1.3.2 和 Plug 1.6.0。

0 投票
2 回答
724 浏览

json - 插件解析器:引发 ParseError

我正在编写一个插件解析器,其中包括使用 Poison 解码 JSON(我更愿意Plug.Parsers.JSON这样做,但我需要读取原始请求正文以根据签名验证它,所以这是不可能的)。

Poison.decode/2用来解码json。{:error, ...}这会在错误时返回一个元组。Plug.Parsers.ParseError作为 Plug 解析器,我认为如果在解析过程中出现错误,我应该提出。但是ParseError需要一个exception结构。我没有其中之一,我只有从Poison.decode/2.

作为一种解决方法,我可以使用 usePoison.decode!/2rescue引发的错误,将其重新提升为 a ParseError,但是当非提升decode/2可用时,这似乎很奇怪。

所以我的问题是,越来越抽象:

  1. 如何在ParseError没有源异常的情况下从解析器引发?
  2. 我需要提出ParseError,还是提出我自己的例外更好?
  3. 有没有更好的方法,允许我在不重新实现 JSON 解析的情况下验证签名?