Elixir 如何获取Phoenix应用程序的当前基本域?
为Phoenix/Elixir应用程序获取基本域的惯用方法是什么?不是单个请求,而是应用程序的基本域,这可能取决于其当前环境 所以在本地,它应该是Elixir 如何获取Phoenix应用程序的当前基本域?,elixir,phoenix-framework,Elixir,Phoenix Framework,为Phoenix/Elixir应用程序获取基本域的惯用方法是什么?不是单个请求,而是应用程序的基本域,这可能取决于其当前环境 所以在本地,它应该是localhost,但在服务器上,它可以是“dev.my_domain.com”、“my_domain.com”或其他我可以在应用程序中使用的东西 当然,我可以在config/dev.exs或config/prod.exs中添加一个特殊的键,但我认为可能已经有这样一个键可以重用。您正在寻找主机。它是存储在Plug.Conn结构中的请求字段 主机-请求的
localhost
,但在服务器上,它可以是“dev.my_domain.com”、“my_domain.com”或其他我可以在应用程序中使用的东西
当然,我可以在
config/dev.exs
或config/prod.exs
中添加一个特殊的键,但我认为可能已经有这样一个键可以重用。您正在寻找主机
。它是存储在Plug.Conn
结构中的请求字段
主机-请求的主机为二进制,例如:“www.example.com”
对于请求,您应该使用
Plug.Conn
中的host
字段,如@TheAnhLe建议的那样
但是,如果您希望以其他方式获取域,Phoenix允许您在应用程序中指定Endpoint
config:
#config/prod.exs
配置:my_应用程序,MyAppWeb.Endpoint,
http:[端口:{:系统,“端口”}],
url:[主机:“example.com”,端口:80],
#更多配置。。。
您可以使用以下方法获取主机的值:
MyAppWeb.Endpoint.url()
# => "http://localhost:4000"
MyAppWeb.Endpoint.host()
#=>“本地主机”
未指定时,此值默认为localhost
更新:对于Phoenix 1.3之前的版本,将MyAppWeb
替换为MyApp
,使用Phoenix 1.3.0(不知道旧版本),您可以从
例如:
iex(1)> TestWeb.Endpoint.url
"http://localhost:4000"
不是一个请求!对于Phoenix 1.3之前的版本,MyApp和MyAppWeb之间没有区别,这个答案是正确的。对于Phoenix的最新版本,它是MyAppWeb.Endpoint,而不是MyApp.Endpoint!