获取Phoenix / Elixir应用程序基本域的惯用方法是什么?不是单个请求,而是应用程序的基本域,可能取决于其当前环境。
所以在本地它应该是localhost
,但在服务器上,它可以是" dev.my_domain.com"," my_domain.com"或者我可以在我的应用程序中使用的其他内容。
我当然可以在config/dev.exs
或config/prod.exs
中添加一个特殊密钥,但我认为可能已经有一个我可以重复使用的密钥。
答案 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)