假设我有一个暴露路由的nodejs应用程序:
app.get('/something/resource', function(req, res) { // ... });
该路由既可用于公共路由,也可用于应用程序本身。我希望从同一个应用程序在函数内部调用此路由并处理它的响应。 我最接近的方法是使用请求模块:
request(req.headers.host + '/something/resource', function(err,res,body) { //... });
但是我得到的错误是“无效的协议:127.0.0.1”“
如果我不使用主机头,我会收到“无效的URI'/ something / resource”
知道如何从内部访问应用程序的API?
答案 0 :(得分:0)
“无效协议”可能意味着它缺少URL前面的协议说明符(某些“http://”),请尝试:
request("http://" + req.headers.host + '/something/resource', function(err,res,body) { //... });
还有两点: 作为主持人,您可以将其硬编码为“localhost”,我期待。并记住端口:通常,调用node.js来侦听其他端口(默认的http端口80)。所以最好将端口添加到url:
request("http://" + req.host + ":" + req.port + '/something/resource', function(err,res,body) { //... });