Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 如何获取Phoenix应用程序的当前基本域?_Elixir_Phoenix Framework - Fatal编程技术网

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

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结构中的请求字段 主机-请求的

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

所以在本地,它应该是
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!