elixir - 通过 Phoenix Elixir 处理 Pipe 中的不同范围和版本
问题描述
我有 2 条管道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
推荐阅读
- javascript - Mapbox GL JS图层动画低fps
- php - 使用 PHPUnit 测试控制器,但它会引发 401 错误
- c# - 将 ScriptableObjects 加载到单个预制件/多个预制件的最佳实践是什么?
- python - Python:在列表中查找相应的元素并将它们总结在一个新列表中
- php - 如何在没有任何外部库的情况下在 php 中制作和过期基于令牌的应用程序
- android - 使用camera2 API检测到人脸时如何使按钮出现?
- mongodb - 使用_t定义查询C#驱动插入的记录
- python - 根据多个条件提取数据框中的行?
- python - 将数据帧上传到 bigquery 时,日期类型的对象不是 JSON 可序列化错误?
- ios - 使用 UIPageControl 显示多个 UICollectionViews