如何使用 Rails 5 让 curl 或 httpie 在本地访问子域



我正在使用 Rails 5 构建一个 API,并尝试使用 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

我几乎可以肯定这是由于子域,但我在任何地方都找不到任何涉及使用 curl 或 httpie 的子域的文档。我该怎么做?

我想通了!这是我所做的:

由于我使用的是 linux 环境,因此我转到/etc/hosts 并添加了一个名为 api.stevenlocal.com 的自定义本地主机名。

environments/development.rb的 Rails 应用程序中,我确保以下行设置为 1

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

将其设置为 1 会告诉 rails 顶级域将在一个周期之后(在这种情况下,stevenlocal 是顶级域,它在 .com 之后(。这很重要,因为 Rails 知道基本上在两个时期(subdomain(first-period)top-level-domain(second-period)com(后寻找我的子域。默认情况下,Rails 将此行设置为 1,但我之前已更改过它。

现在在命令行上,当我尝试http api.stevenlocal.com:3000/v1/users时,它按预期工作。请注意,http 是与 httpie 命令行工具一起使用的类似 curl 的命令

相关内容

  • 没有找到相关文章

最新更新