2016-10-25 69 views
4

獲得Phoenix/Elixir應用程序的基本域的慣用方法是什麼?不是一個請求,而是一個應用程序的基本域,這可能取決於它的當前環境。如何獲取Phoenix應用程序的當前基本域?

因此,本地應該是localhost,但在服務器上,它可以是「dev.my_domain.com」,「my_domain.com」或其他可在我的應用程序中使用的其他內容。

當然,我可以在config/dev.exsconfig/prod.exs中添加一個特殊的密鑰,但我認爲可能已經存在這樣一個密鑰,我可以重複使用它。

回答

4

您在查找host。它是存儲在Plug.Conn結構中的請求字段。

主機 - 請求的主機爲二進制,例如: 「www.example.com」

Request Fields

+0

不是**一個請求,**! – Meji

3

如果有需求,你應該使用在Plug.Conn像@TheAnhLe的host場建議。

但是,如果你正在尋找其他方式來獲得域名,鳳凰,可以指定你的應用程序中的url參數Endpoint配置:

# config/prod.exs 

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

你可以用它來獲取主機的值:

Application.get_env(:my_app, MyApp.Endpoint)[:url][:host] 

未指定時,此值默認爲localhost

2

鳳凰1.3.0(不知道老版本),你可以從Endpoint API

調用url/0例如:

iex(1)> TestWeb.Endpoint.url 
"http://localhost:4000" 
相關問題