如何使用http:// localhost:3001为所有$ http请求添加前缀?

时间:2015-08-03 00:58:59

标签: javascript angularjs

我的网络服务器位于http://localhost:3000,但我的API服务器位于http://localhost:3001。所以不要像我这样对我的所有请求进行表达:

var root = 'http://localhost:3001';
$http.get(root+'/')...

...如何将http://localhost:3001设置为所有外发$http请求的默认值?我试着看Default Transformations,但无法理解。

编辑:在仔细阅读文档后,我对Angular有办法解决这个问题的能力(但仍然不确定)不太自信(但仍然不确定)。您似乎可以操纵标题和数据,但不能操纵网址。

编辑2:两位回答者建议使用全局函数/变量。这有效,但会导致CORS错误。

2 个答案:

答案 0 :(得分:1)

您可以编写一个处理前缀的全局函数,例如

function p(uri) {
    return "http://localhost:3001" + uri;
}

...

$http.get( p('/') );

答案 1 :(得分:1)

根据您从一个js文件或多个js文件中执行请求的情况,您可以

//Create 2 global variables first outside the function then just use the 
// var name when needed
var web = "http://localhost:3001";
var api = "http://localhost:3000";

或者如果您需要跨多个js文件执行请求,您可以创建函数来返回每个var,然后在需要时调用它们。请记住,首先需要加载带有functios的文件。

function web() {
    return "http://localhost:3001";
}

function api() {
    return "http://localhost:3000";
}

所以那就是

$http.get(api + '/')...

$http.get(api() + '/')...

修改:更新有关其他问题

POST请求正由浏览器通过OPTIONS请求进行预检,如果没有获得批准,则不会向服务器发送实际请求,这是COR行为,详情请参阅COR文档。

有几种方法可以解决此问题,但一种常见的方法是在请求中添加标题:

var url = 'http://localhost:3001/users',
    user= { 'someKey': 'some value' },
    config = {
        headers: {
            'Content-Type': 'text/plain'
        }
   }
};

$http.post(url,user,config);