我的网络服务器位于http://localhost:3000
,但我的API服务器位于http://localhost:3001
。所以不要像我这样对我的所有请求进行表达:
var root = 'http://localhost:3001';
$http.get(root+'/')...
...如何将http://localhost:3001
设置为所有外发$http
请求的默认值?我试着看Default Transformations,但无法理解。
编辑:在仔细阅读文档后,我对Angular有办法解决这个问题的能力(但仍然不确定)不太自信(但仍然不确定)。您似乎可以操纵标题和数据,但不能操纵网址。
编辑2:两位回答者建议使用全局函数/变量。这有效,但会导致CORS错误。
答案 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);