通过凤凰药剂在管道中处理不同的范围和版本



我的router.ex中有 2 个管道

pipeline :api_v1 do
plug :accepts, ["json", "jpg"]
plug CORSPlug, origin: ["*"]
plug APIVersion, version: :v1
end
pipeline :api_v2 do
plug :accepts, ["json", "jpg"]
plug CORSPlug, origin: ["*"]
plug APIVersion, version: :v2
end

然后我有这两个范围。

一个/v2

scope "/v2", EvercamMediaWeb do
pipe_through :api_v2

一个/v1

scope "/v1", EvercamMediaWeb do
pipe_through :api_v1

在这两个作用域中,所有路由都是相同的。 并且由于拥有 2 个管道和 2 个版本,我必须以 2 个不同的pipe_through复制所有路由, 这有可能使它动态吗?

这样所有路由都将在router.ex文件中写入一次,但两个作用域都可以处理?

它仍然是普通的老,基本语法适用。

for v <- [:v1, :v2] do
pipeline :"api_#{v}" do
plug :accepts, ["json", "jpg"]
plug CORSPlug, origin: ["*"]
plug APIVersion, version: v
end
end

范围也是如此

for v <- [:v1, :v2] do
scope to_string(v), EvercamMediaWeb do
pipe_through :"api_#{v}"
end

最新更新