2017-04-01 16 views
0

我正在使用Rails 5構建API,並嘗試使用curl或httpie在命令行上本地測試本地請求。如何在Rails 5本地使用curl或httpie訪問子域名

但是,我在我的路線中使用了constraints subdomain: 'api',並且curl和httpie都不喜歡這樣。如果我打開Chrome並轉至http://api.localhost:3000/v1/users,我會收到有效回覆。然而,隨着httpie我得到這個錯誤:

http: error: ConnectionError: HTTPConnectionPool(host='api.localhost', port=3000): 
Max retries exceeded with url: /v1/users (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection 
object at 0x105732550>: Failed to establish a new connection: [Errno 8] 
nodename nor servname provided, or not known',)) while doing GET request to 
URL: http://api.localhost:3000/v1/users 

我幾乎certin這是由於子域,但我找不到任何地方的任何文件是指使用與捲曲或httpie子域。我怎樣才能做到這一點?

回答

0

我想通了!以下是我所做的:

由於我使用的是Linux環境,因此我去了/ etc/hosts並添加了一個名爲api.stevenlocal.com的自定義本地主機名。

在我的Rails應用程序在environments/development.rb我確信以下行設置爲1

# Allow constraint subdomain for routes 
    config.action_dispatch.tld_length = 1 

將它設置爲1告知的頂級域名將是一個週期後(在這種情況下軌,stevenlocal是頂級域名,它在.com之後)。這很重要,因爲Rails知道在兩個時期後(subdomain(first-period)top-level-domain(second-period)com)才能查找我的子域。 默認情況下,Rails將此行設置爲1,但我之前已更改它。

現在在命令行上,當我嘗試http api.stevenlocal.com:3000/v1/users時,它按預期工作。 請注意,http是一個類似curl的命令,與httpie命令行工具一起使用