2016-10-25 1 views
4

Phoenix/Elixir 앱의 기본 도메인을 가져 오는 관용적 인 방법은 무엇입니까? 단일 요청이 아니라 응용 프로그램의 기본 도메인으로, 이는 현재의 환경에 따라 다릅니다.Phoenix 앱의 현재 기본 도메인을 얻는 방법은 무엇입니까?

로컬에서는 localhost이어야하지만 서버에서는 "dev.my_domain.com", "my_domain.com"또는 내 응용 프로그램에서 사용할 수있는 다른 항목이 될 수 있습니다.

물론 config/dev.exs 또는 config/prod.exs에 특수 키를 추가 할 수는 있지만 재사용 할 수있는 키가 이미있을 수 있다고 생각했습니다.

답변

4

host을 찾고 있습니다. 요청란은 Plug.Conn 구조체에 저장되어 있습니다.

호스트 - 이진, 예를 들어 같은 요청 호스트 : "www.example.com"요청에 대한

Request Fields

+0

을 ** 아니 하나의 요청으로, **! – Meji

3

, 당신은 @TheAnhLe 같은 Plug.Connhost 필드를 사용한다 제안했다.

Application.get_env(:my_app, MyApp.Endpoint)[:url][:host] 
: 당신은 호스트의 값을 얻기 위해 이것을 사용할 수 있습니다

# config/prod.exs 

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

: 당신이 그렇지 않으면 도메인을 얻기 위해 찾고 있다면

는하지만, 피닉스는 응용 프로그램에서 Endpoint 설정을 url 매개 변수를 지정할 수 있습니다

지정되지 않은 경우이 값의 기본값은 localhost입니다. 피닉스 1.3.0 (이전 버전 모르는)와

2

당신은 예를 들어 Endpoint API

에서 url/0를 호출 할 수

iex(1)> TestWeb.Endpoint.url 
"http://localhost:4000" 
관련 문제