我有前端内容,需要后端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";
}
除此之外,这是进一步的前端内容,这是一个有点笨拙的事实-它排除了静态内容以各种其他方式托管,包括一套功能和集成测试。
我有一些想法,比如让他们运行一个小型的web服务器代理后端api,但我真正想要的是一些更简单的东西,允许我以一种不那么笨拙的方式默认url
。理想情况下,会有某种方式从一个被版本控制忽略的文件配置url
(例如,.gitignore
)。
我能够创建一个适用于所有本地开发方式以及生产版本的解决方案。
我创建了一些JavaScript, apiurl.js
,它与我们所有其他JavaScript内容并列。如果存在apiurl.js
文件,我将其responseText
读入eval()
。因此,前端可以根据该文件的内容更改URL。
。, apiurl.js
has:
var apiurl = "https://staging-server.somewhere.com";
和处理内容的JavaScript:
eval(responseText);
if (typeof(apiurl) != undefined) {
url = apiurl;
}
版本控制不跟踪apiurl.js
文件,也不用于生产。