【发布时间】:2015-12-23 10:38:48
【问题描述】:
在 Phoenix 框架中,如何在 Accepts 中路由自定义媒体类型?
Phoenix's own code comments 表示以下是所有必要的——再加上重新编译的 deps,尽管我不知道对此的需求。但是,这似乎不起作用:
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
[…]
some_test.ex:
setup do
conn = conn() |> put_req_header("accept", "application/vnd.api+json")
{:ok, conn: conn}
end
所有测试的请求(使用设置中的 conn)都会收到 HTTP 406 响应。
【问题讨论】:
-
您在配置中映射
"api-json",但您将"json-api"传递给您的接受插件。问题中的错字或代码中的错字?这似乎是可能的罪魁祸首 -
@ChrisMcCord 感谢您指出这一点,恐怕只是问题中的一个错字,即我测试的代码没有这个问题,仍然无法正常工作。更正了问题。
-
你能指定“似乎不起作用吗?”。什么不工作?你期待什么,你得到什么?另外,请确保您的依赖项已重新编译,
rm -rf _build如果有疑问。 -
对不起,我写的真的很糟糕。我应该说(并且已经编辑 Q 现在说)是执行上述操作会导致 406。
标签: http-headers url-routing mime-types elixir phoenix-framework