gpt4 book ai didi

elixir - Phoenix 框架模式匹配请求 header

转载 作者:行者123 更新时间:2023-12-04 22:10:05 24 4
gpt4 key购买 nike

我正在尝试为 API 版本控制实现自定义插件。现在我需要能够匹配通过请求 header 传递的值(即 Accept: application/vnd.app.v1+json )。到目前为止,我已经实现了以下内容:

defmodule UsersApi.Plugs.APIVersion do
import Plug.Conn

@versions ["application/vnd.app.v1+json", "application/vnd.app.v2+json"]

def init(version), do: version

def call(%{req_headers: %{"accept" => version}} = conn, _) when version in @versions do
assign(conn, :version, version)
end

def call(conn, version), do: assign(conn, :version, version)
end

这目前不起作用,并落入第二个 call/2当未指定接受 header 时,它被设计为回退。如何与请求 header 匹配?

最佳答案

req_headers是一个列表,但您像 map 一样对其进行模式匹配,但总是失败,并且所有调用 call/2最终成为后备。您可以使用 get_req_header/2为了这:

def call(conn, default_version) do
version = case get_req_header(conn, "accept") do
[version] when version in @versions -> version
_ -> default_version
end
assign(conn, :version, version)
end

关于elixir - Phoenix 框架模式匹配请求 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42331612/

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