问题标签 [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.
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.Base
并require Http.Endpoints.V2.Base
更改了我的 applications.ex 但它不起作用。
elixir - 如何自定义 Plug.Parsers JSON 解码器的选项?
使用Plug.Parsers
,可以配置用于解析 JSON 请求的模块:
但是,使用此语法Jason.decode!/2
调用空opts
参数。
我们如何为指定的选项提供选项json_decoder
?例如,我想将keys: :atoms
选项传递给Jason.decode!/2
.
elixir - POST 后使用 plug_cowboy (2.0) 重定向
我有一个像这样的简单插件后处理程序
…但我想以某种方式重定向到另一个get
处理程序,而不是呈现 html。
如何使用 plug_cowboy 2.0 做到这一点?
elixir - Elixir - 在 Phoenix 控制器的其他操作中触发插件
我正在使用PolicyWonk
授权并创建了此策略:
我的控制器定义如下:
我注意到尝试创建组织失败并抛出{:error, :forbidden}
元组。该政策仅:show
根据我的保护条款影响,但为什么它:create
也会影响?
erlang - 简单的 Elixir / Plug 进程问题 - PID 不存在
我刚开始使用 Elixir,想用 Plug 构建一个非常简单的 API。我使用本指南来启动和运行一个非常简单的 API。
基本上,我面临的问题是:qs
,每当我send/2
在queue_service.ex
. 我想要实现的是一个持续存在的过程,以便我可以跨请求维护状态。
在我的router.ex
文件中,我有:
然后在内部queue_service.ex
,我启动队列进程,将其注册到 的原子:qs
,然后希望稍后能够通过请求调用的函数进入该进程。我有:
最后,在 中queue_store.ex
,我实际上定义了我想要存储状态的进程,并运行一个循环以使其保持活动状态,并准备好接收消息。我有:
更新:
Github 仓库:https ://github.com/qarthandgi/test-second-queue
elixir - 在Phoenix中没有重定向的POST操作中响应错误页面的正确方法是什么?
我认为这是一个基本情况。我有一个POST
动作,我想响应 403 状态并显示错误页面。
但是,它将返回 403 但不呈现错误页面。相反,它会扔进Failed to load resource: the server responded with a status of 403 ()
浏览器并下载一个奇怪的signup.dms
文件。
我有一个设计的403.html.eex
,有人知道如何正确显示它吗?
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
并且halt
在Plug.Conn
. put_view
并且render
在Phoenix.Controller
. 我知道我可以使用完整的命名空间来调用这些函数,但它看起来是多余的。所以我也在考虑import/use/alias
功能。
对于Plug.Conn
,Programming Phoenix 1.4 Book 使用import Plug.Conn
,一些官方插件使用alias Plug.Conn
。
对于Phoenix.Controller
,我还没有找到任何例子,但import
可以工作。不建议在 Plug 中使用 Controller 功能吗?
我正在考虑代码的简化、可读性和性能。有谁知道这方面的最佳做法是什么?
干杯
elixir - 我是否必须做任何事情才能使 Plugs 在测试环境(Elixir / Phoenix)中工作?
我有一个基本应用程序并尝试在我的控制器上使用插件。如果请求正文没有“url”参数,它基本上应该返回 400。当我从邮递员发送请求时它工作正常,但它似乎不适用于我的测试。
我是否必须做任何事情才能使其在测试环境中也能正常工作?
测试:
结果:
邮递员结果: https ://prnt.sc/qdy2bo
elixir - Phoenix 控制器操作后如何获取 conn 结构
在我的项目的所有控制器操作之后,我想向我的 Elasticsearch 发送一些连接信息,例如:控制器操作响应、请求参数和端点。
如果我们需要在操作解决后处理控制器返回的 conn 结构,我们该怎么办?
testing - 如何为 Plug 错误处理编写测试
我正在尝试使用-- with等Plug.Test
来测试错误处理。Plug.ErrorHandler
assert conn.status == 406
我有defp handle_errors
(包含一条send_resp
语句),它似乎被调用了,但是,我的测试仍然失败,但仍然有同样的异常(好像handle_errors
没有效果)。
对示例高级插件(不是 Phoenix)应用程序的引用也将不胜感激。