java - 从不同的域调用 REST API,例如具有相对 URL 的 Angular JS

标签 java angularjs rest spring-mvc

我已经使用托管在一个域上的 spring mvc 编写了 REST API,前端是使用托管在另一个域上的 HTML 和 Angular JS 编写的。现在我想从放置 Frond UI 的另一个域调用 REST API那么如何使用相对 URI 而不是绝对 URI 来调用 REST API?

例如 Instaed

webbrokerModule.factory('CustomerContact', [ '$resource', function($resource) {
    return $resource('http://localhost:24000/webbroker/customercontact/:brokerid', {
        brokerid : '@brokerid'
    }, {
        get : {
            method : 'GET'
        }
    });
} ]);

I want to call it as 
webbrokerModule.factory('CustomerContact', [ '$resource', function($resource) {
    return $resource('/webbroker/customercontact/:brokerid', {
        brokerid : '@brokerid'
    }, {
        get : {
            method : 'GET'
        }
    });
} ]);

我不想提及 IP 地址和端口。

最佳答案

您需要创建硬编码资源的工厂或服务。

例如:

angular
.module('app')
.factory('storage', storageFactory);

function storageFactory() {

var r =
{
    serverAdress : 'https://server.address.fr',
    //serverAdress : 'https://another.server.adress.fr',
    //serverAdress : 'http://localhost:3000',
};

return r;

}

使用示例:

$http.get(storage.serverAdress + '/relative/path').then(function(res)...

通过这种方式,您可以封装所有硬编码数据,并根据您的环境变量更轻松地更改它们(例如,如果您想要测试服务器或其他东西的不同服务器地址)。

如果有一天您想更改您的域名,这也非常简单。这种做法称为薄层。

关于java - 从不同的域调用 REST API,例如具有相对 URL 的 Angular JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45506922/

相关文章:

java - 如何在 Tomcat 中运行 GWT 应用程序?

java - CollectionUtils.isNotEmpty 和 In Place 检查之间的性能差异

java - 不兼容的类型 : List<A> cannot be converted to List<U>

javascript - Angular JS 长按事件

javascript - 动态添加特定属性到元素

java - 为什么jersey2服务部署在tomcat中没有错误,但无法访问资源?

java - 为什么 Java 会给我不寻常的 double 算术运算结果?

javascript - 如何动态使用 angularjs ng-outlet

休息 - 关系上下文

java - REST Web 服务返回 415 - 不支持的媒体类型