Http headers Phoenix Framework:如何路由自定义媒体类型?

Http headers Phoenix Framework:如何路由自定义媒体类型?,http-headers,url-routing,mime-types,elixir,phoenix-framework,Http Headers,Url Routing,Mime Types,Elixir,Phoenix Framework,在Phoenix框架中,如何在Accepts中路由自定义媒体类型 指出以下是所有必要的,再加上DEP的重新编译,尽管我没有必要这样做。但是,这似乎不起作用: config.exs: […] config :plug, :mimes, %{ "application/vnd.api+json" => ["json-api"] } router.ex: pipeline :api do plug :accepts, ["json-api"] end […] scope "/",

在Phoenix框架中,如何在Accepts中路由自定义媒体类型

指出以下是所有必要的,再加上DEP的重新编译,尽管我没有必要这样做。但是,这似乎不起作用:

config.exs:

[…]

config :plug, :mimes, %{
  "application/vnd.api+json" => ["json-api"]
}
router.ex:

pipeline :api do
  plug :accepts, ["json-api"]
end

[…]

scope "/", SomeApp do
  pipe_through :api

  […]
一些测试。例如:

setup do
  conn = conn() |> put_req_header("accept", "application/vnd.api+json")
  {:ok, conn: conn}
end

所有测试的请求(使用安装程序中的conn)都会收到HTTP 406响应。

结果表明以下内容不充分:

% touch deps/plug/mix.exs
% mix deps.compile plug
% mix clean

相反,正如@josé-valim在问题的评论中所建议的那样,删除整个构建目录起到了作用。为了确保这一点,我来回走了好几次,每次我只触摸和deps.compiled,没有joy,每次我删除(u build,joy)。

您正在配置中映射
“api json”
,但您正在将
“json api”
传递给您的插件。问题输入错误还是代码输入错误?这似乎是最有可能的culprit@ChrisMcCord感谢您指出这一点,我担心的只是问题中的一个输入错误,即我测试的代码没有这个问题,仍然无法工作。更正了问题。您可以指定“似乎不起作用”吗。什么不起作用?你期待什么?你得到了什么?另外,如果有疑问,请确保您的依赖项已重新编译,
rm-rf\u build
。对不起,我写的这篇文章真的很糟糕。我应该说的是(并且编辑了Q现在说的)做了以上的事情会得到406分。谢谢。我花了很长时间试图弄清楚如何使用ja_序列化程序运行测试。