2017-07-25 62 views
0

當我在本地運行我的Phoenix應用程序時,所有請求的基本URL類似http://localhost:4000。在生產中,它就像https://example.com/如何獲取鳳凰應用程序的「基本網址」?

我想通過這個基地址到我的JavaScript。我怎麼才能得到它?

注:

  • 我不想檢查conn;這是我想在編譯或啓動時設置的,而不是在請求時設置的。
  • 我知道我可以檢查Application.get_env(:myapp, MyApp.Endpoint)[:url][:host] %,但那不包括計劃(httphttps)或港口。如果我必須從幾個地方拼湊這些,我可能可以,但我寧願不要。
+0

也許這並不簡單,因爲正如'dev.exs'中生成的註釋所說的那樣,「如果需要,可以將http:'和'https:'鍵都配置爲同時運行不同的http和https服務器港口「? –

+0

Phoenix本身使用Endpoint配置和Elixir的內置'URI'模塊構建URL:https://github.com/phoenixframework/phoenix/blob/10b6c1e8df915e82a4040f14f94afc1aed8ab47a/lib/phoenix/endpoint/supervisor.ex#L235-L255。 – Dogbert

回答

2

您可以使用MyApp.Endpoint.url()

的環節是1.3的文檔,因爲它記錄了應用程序的Endpoint作爲回調產生的所有功能,但功能可至少從1.2(我沒有更早選中)。

0

使用路徑幫手

哎呦,有這個一個顯而易見的解決方案。 :)

MyApp.Router.Helpers.page_url(MyApp.Endpoint, :index) 

感覺有點彆扭用於此特定的命名路線,但它的工作原理。儘管如此,我仍然接受更多語義解決方案。