NodeJS请求localhost上的Rails应用程序

时间:2018-01-09 01:54:19

标签: ruby-on-rails node.js http request

我在我的NodeJS服务器(节点9.3.0)中有这个,我得到了ECONNREFUSED

request({ 
  method: 'POST', 
  url: 'http://127.0.0.1:3050/v1/clinician' 
}, (err, httpResponse, body) => { 
  console.log('CONNECT ERROR', err) 
})

在导轨方面,我正在使用rails s -p 3050运行应用程序。

如果我从node CLI运行相同的命令,那么我会收到回复。我也得到了这个样本CURL的响应

curl -X POST http://localhost:3050/v1/clinician \
     -H "Content-Type: application/json" \
     -d '{"clinician": { "access_token": "test"} }'

我也尝试使用npm http库,并得到同样的错误。

const httpRequest = http.request({
  hostname: '127.0.0.1', // or localhost
  port: 3050,
  path: '/v1/clinician',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  }
}, (response) => {
  console.log(`STATUS: ${response.statusCode}`)
}).on('error', (e) => {
  console.log(`problem with request: ${e.message}`)
})

鉴于它在CLI和cURL中工作,我假设它与NodeJS应用程序本身作为请求的来源有关。

1 个答案:

答案 0 :(得分:0)

问题在于我需要首先将我的rails应用程序停靠,以便它与节点应用程序位于同一主机(在docker VM中)。然后,我需要使用http://<container_name>:3050而不是http://localhost:3050来发出请求。