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

elixir - Elixir Plug 中的版本控制 API

我有两个模块:lib/endpoints/v1/base.ex 和 lib/endpoints/v2/base.ex。

lib/endpoints/v1/base.ex

lib/endpoints/v2/base.ex

如果我把我的 applications.ex 孩子放进去,我的端点可以正常工作

Plug.Cowboy.child_spec(scheme: :http, plug: Http.Endpoints.V1.Base, options: [port: Application.get_env(:http, :port)])

但我希望我的应用程序启动所有端点版本。

我尝试使用 and 创建 lib/endpoints.exrequire Http.Endpoints.V1.Baserequire Http.Endpoints.V2.Base更改了我的 applications.ex 但它不起作用。

0 投票
1 回答
447 浏览

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

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

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

我们如何为指定的选项提供选项json_decoder?例如,我想将keys: :atoms选项传递给Jason.decode!/2.

0 投票
1 回答
219 浏览

elixir - POST 后使用 plug_cowboy (2.0) 重定向

我有一个像这样的简单插件后处理程序

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

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

0 投票
0 回答
61 浏览

elixir - Elixir - 在 Phoenix 控制器的其他操作中触发插件

我正在使用PolicyWonk授权并创建了此策略:

我的控制器定义如下:

我注意到尝试创建组织失败并抛出{:error, :forbidden}元组。该政策仅:show根据我的保护条款影响,但为什么它:create也会影响?

0 投票
1 回答
59 浏览

erlang - 简单的 Elixir / Plug 进程问题 - PID 不存在

我刚开始使用 Elixir,想用 Plug 构建一个非常简单的 API。我使用本指南来启动和运行一个非常简单的 API。


基本上,我面临的问题是:qs,每当我send/2queue_service.ex. 我想要实现的是一个持续存在的过程,以便我可以跨请求维护状态。


在我的router.ex文件中,我有:


然后在内部queue_service.ex,我启动队列进程,将其注册到 的原子:qs,然后希望稍后能够通过请求调用的函数进入该进程。我有:


最后,在 中queue_store.ex,我实际上定义了我想要存储状态的进程,并运行一个循环以使其保持活动状态,并准备好接收消息。我有:


更新:
Github 仓库:https ://github.com/qarthandgi/test-second-queue

0 投票
2 回答
235 浏览

elixir - 在Phoenix中没有重定向的POST操作中响应错误页面的正确方法是什么?

我认为这是一个基本情况。我有一个POST动作,我想响应 403 状态并显示错误页面。

但是,它将返回 403 但不呈现错误页面。相反,它会扔进Failed to load resource: the server responded with a status of 403 ()浏览器并下载一个奇怪的signup.dms文件。

我有一个设计的403.html.eex,有人知道如何正确显示它吗?

0 投票
2 回答
232 浏览

phoenix-framework - 在 Plug Module 中使用 Controller 和 Conn 功能的最佳方法是什么?

我想在我的凤凰应用程序中编写自己的插件。该插件用于检查 cookie 并在 cookie 不存在时呈现错误页面。类似于 404 错误。根据逻辑,可以调用以下函数:

  • put_status:设置响应的状态码,我设置为422。
  • put_view: 我的错误页面位于 中templates/error/422.html.eex,所以ErrorView应该包含。
  • render: 渲染 html 页面。
  • halt: 停止连接。

put_status并且haltPlug.Conn. put_view并且renderPhoenix.Controller. 我知道我可以使用完整的命名空间来调用这些函数,但它看起来是多余的。所以我也在考虑import/use/alias功能。

对于Plug.Conn,Programming Phoenix 1.4 Book 使用import​ Plug.Conn,一些官方插件使用alias Plug.Conn

对于Phoenix.Controller,我还没有找到任何例子,但import可以工作。不建议在 Plug 中使用 Controller 功能吗?

我正在考虑代码的简化、可读性和性能。有谁知道这方面的最佳做法是什么?

干杯

0 投票
1 回答
356 浏览

elixir - 我是否必须做任何事情才能使 Plugs 在测试环境(Elixir / Phoenix)中工作?

我有一个基本应用程序并尝试在我的控制器上使用插件。如果请求正文没有“url”参数,它基本上应该返回 400。当我从邮递员发送请求时它工作正常,但它似乎不适用于我的测试。

我是否必须做任何事情才能使其在测试环境中也能正常工作?

测试:

结果:

邮递员结果: https ://prnt.sc/qdy2bo

0 投票
1 回答
218 浏览

elixir - Phoenix 控制器操作后如何获取 conn 结构

在我的项目的所有控制器操作之后,我想向我的 Elasticsearch 发送一些连接信息,例如:控制器操作响应、请求参数和端点。

如果我们需要在操作解决后处理控制器返回的 conn 结构,我们该怎么办?

0 投票
2 回答
277 浏览

testing - 如何为 Plug 错误处理编写测试

我正在尝试使用-- with等Plug.Test来测试错误处理。Plug.ErrorHandlerassert conn.status == 406

我有defp handle_errors(包含一条send_resp语句),它似乎被调用了,但是,我的测试仍然失败,但仍然有同样的异常(好像handle_errors没有效果)。

对示例高级插件(不是 Phoenix)应用程序的引用也将不胜感激。