gpt4 book ai didi

elixir - 将 Phoenix 请求路径与数据库中定义的 Route 匹配

转载 作者:行者123 更新时间:2023-12-04 12:50:36 25 4
gpt4 key购买 nike

当我们发送请求时,我们在 conn 结构中有当前路径信息。让我们说补丁请求。

["v1", "users", "2"] or "v1/users/2"

我正在根据数据库中的路径信息编写用户授权插件。在数据库中,路径存储如下:
"v1/users/:id"

这是我们从运行中得到的路径 mix phx.routes .我是否有可能获得 "v1/users/:id"而不是 "v1/users/2"对于当前路径?所以我可以将它与存储在数据库中的路径相匹配。

有什么解决办法吗?

最佳答案

一种非常hackey 的方法是手动替换关联键路径中的值。

conn结构体,我们有 path_info: ["v1", "users", "2"]path_params: %{"id" => "2"} ,所以我们可以这样做:

Enum.reduce(conn.path_params, conn.path_info, fn {key, value}, acc ->
index = Enum.find_index(acc, fn x -> x == value end)
List.replace_at(acc, index, ":#{key}")
end)
|> Enum.join("/")

输出将是 v1/users/:id .

请注意,如果您的参数值与路由的一部分相同(这似乎不太可能发生),这将失败。此外,如果您有多个可以取相同值的参数,我们将依赖于 path_params 中参数的顺序。 .

关于elixir - 将 Phoenix 请求路径与数据库中定义的 Route 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53625547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com