使用Plug验证特定端点的标头

问题描述

背景

我有一个简单的即插即用路由器,该路由器具有一些POST,PUT和GET端点。但是,每个端点都需要对请求的标头进行特定的验证。我不知道如何使用Plug来实现。 代码

我有一个非常通用的路由器,可以接收请求并将其重定向到控制器:

defmodule Api do
  use Plug.Router

  alias Api.Controllers.{Product,NotFound,Ping}

  plug :match
  plug Plug.Logger
  plug :dispatch

  get "/ping",do: Ping.process(conn)
  put "/product",do: Product.process(conn)

  match _,do: NotFound.process(conn)
end

问题

但是,缺少一个步骤。我需要/ products端点来验证标题。也就是说,标头应设置一些特定的字段,例如“ conten-type”标头,甚至是“香蕉”之类的自定义标头。

此验证不适用于所有端点。更糟糕的是,每个端点都将进行自己的验证,例如,对于“ / products”端点,具有“ bananas”标题可能很重要,但是“ / ping”端点并不在乎。

研究

我已经阅读了这篇文章:

但是,这适用于所有端点,并且不是特定的。

问题

  • 使用Plug能否实现我想要的?如果可以,怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)