如何获取Phoenix应用程序的当前基本域?

时间:2016-10-25 14:55:04

标签: elixir phoenix-framework

获取Phoenix / Elixir应用程序基本域的惯用方法是什么?不是单个请求,而是应用程序的基本域,可能取决于其当前环境。

所以在本地它应该是localhost,但在服务器上,它可以是" dev.my_domain.com"," my_domain.com"或者我可以在我的应用程序中使用的其他内容。

我当然可以在config/dev.exsconfig/prod.exs中添加一个特殊密钥,但我认为可能已经有一个我可以重复使用的密钥。

3 个答案:

答案 0 :(得分:8)

对于请求,您应该使用host中的Plug.Conn字段,例如@TheAnhLe建议。

但如果你想要获得域名,那么Phoenix允许你在应用程序url配置中指定Endpoint参数:

# config/prod.exs

config :my_app, MyApp.Endpoint,
  http: [port: {:system, "PORT"}],
  url: [host: "example.com", port: 80],
  # more configs...

您可以使用这些方法获取主机的值:

MyApp.Endpoint.url
# => "http://localhost:4000"

Application.get_env(:my_app, MyApp.Endpoint)[:url][:host]
# => "localhost"

未指定时,此值默认为localhost

答案 1 :(得分:5)

使用phoenix 1.3.0(不了解旧版本),您可以从Endpoint API

致电url/0

例如:

iex(1)> TestWeb.Endpoint.url
"http://localhost:4000"

答案 2 :(得分:4)

您正在寻找host。这是一个存储在Plug.Conn结构中的请求字段。

  

host - 请求的主机作为二进制文件,例如:“www.example.com”

Request Fields