通过 Phoenix Elixir 处理 Pipe 中的不同范围和版本
handling different scopes and versions in Pipe through Phoenix Elixir
我的 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
文件中写入一次,但两个范围都可以处理?
它仍然是普通的老好东西Elixir,基本语法适用。
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
我的 router.ex
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
文件中写入一次,但两个范围都可以处理?
它仍然是普通的老好东西Elixir,基本语法适用。
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