使用后端API前端内容 - 如何避免后端API的硬编码?

时间:2014-03-15 01:48:20

标签: cross-domain local web-frontend

我的前端内容需要后端REST API才能运行。 API允许跨源资源共享(CORS)。通常我们在本地运行完整的堆栈,包括为开发使用量身定制的用户模式Nginx实例,它为前端内容提供服务。然而,完整的堆栈有点太多,不足以让兼职承包商争吵。所以我想要一种非常基本的方法,他们可以使用它来有效地完成工作。

他们目前的解决方案很可怕:

var port = location.port;
// base url of backend API
var url = window.location['origin'];
if (port != '443') {
    // assume we're running in "development" mode against a staging server
    url = "https://staging-server.somewhere.com";
}

除了这会使前端内容进一步发展之外,它还会阻止静态内容以各种其他方式进行托管,包括一系列功能和集成测试。

我有一些想法,比如让他们运行一个代理后端API的小型Web服务器,但我真正想要的是更简单的东西,允许我以较少的方式默认url。理想情况下,会有某种方式从版本控制忽略的文件中配置url(例如,.gitignore)。

1 个答案:

答案 0 :(得分:0)

我能够创建一个适用于各种本地开发和生产版本的解决方案。

我创建了一些JavaScript,apiurl.js,与我们所有其他JavaScript内容并列。如果apiurl.js文件存在,我会将其responseText读入eval()。因此,前端可以根据该文件的内容更改URL。

例如,apiurl.js有:

var apiurl = "https://staging-server.somewhere.com";

用于处理内容的JavaScript:

eval(responseText);
if (typeof(apiurl) != undefined) {
    url = apiurl;
}

apiurl.js文件未被版本控制跟踪,未在生产中使用。