我可以通过运行ember serve --proxy http://localhost:3000启动我的ember / rails服务器。
我已经创建了一个divshot帐户,以便将此应用程序推送到生产服务器,但我无法将网址传递给我的json api。
//divshot.json
{
"name": "project-name",
"root": "./dist",
"routes": {
"/tests": "tests/index.html",
"/tests/**": "tests/index.html",
"/**": "index.html"
},
"proxy": {
"origin": "https://railsapi.herokuapp.com/"
}
}
//environment.js
/* jshint node: true */
module.exports = function(environment) {
var ENV = {
modulePrefix: 'project-name',
environment: environment,
baseURL: '/',
locationType: 'auto',
EmberENV: {
FEATURES: {
// Here you can enable experimental features on an ember canary build
// e.g. 'with-controller': true
}
},
APP: {
// Here you can pass flags/options to your application instance
// when it is created
}
};
if (environment === 'development') {
// ENV.APP.LOG_RESOLVER = true;
// ENV.APP.LOG_ACTIVE_GENERATION = true;
// ENV.APP.LOG_TRANSITIONS = true;
// ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
// ENV.APP.LOG_VIEW_LOOKUPS = true;
}
if (environment === 'test') {
// Testem prefers this...
ENV.baseURL = '/';
ENV.locationType = 'none';
// keep test console output quieter
ENV.APP.LOG_ACTIVE_GENERATION = false;
ENV.APP.LOG_VIEW_LOOKUPS = false;
ENV.APP.rootElement = '#ember-testing';
}
if (environment === 'production') {
}
return ENV;
};
如何将应用推送到divshot并使用我在其他地方托管的API?
ember-cli 1.8.1 - link to project in question
答案 0 :(得分:2)
我完全没有意识到Divshot有这项服务。真棒。
查看the docs,您似乎需要将代理放在命名密钥下。
在他们的示例中,它是"api"
:
{
"proxy": {
"api": {
"origin":"https://api.my-app.com",
"headers": {
"Accept": "application/json"
},
"cookies": false,
"timeout": 30
}
}
}
并通过/__/proxy/{NAME}/{PATH}
形式的特殊网址访问它:
$.ajax({
url: '/__/proxy/api/users/123',
type: 'POST',
dataType: 'json',
success: function(data) {
// ...
}
})
修改强>
我省略了你的Ember应用程序的实际配置。
您需要在config/environment.js
中设置API前缀。
在开发中本地工作前缀为''
,而在Divshot中,前缀为/__/proxy/api
。
在config/environment.js
我喜欢这样做:
module.exports = function(environment) {
// Snip...
ENV.API_PREFIX: process.env.API_PREFIX || '',
};
然后您可以在app/adapters/application.js
中使用此值:
import DS from 'ember-data';
import config from '../config/environment';
export default DS.ActiveModelAdapter.extend({
host: config.apiUrl
});
在命令行中指定API_PREFIX
,如下所示:
$ API_PREFIX="/__/proxy/api" ember build
$ divshot push
希望有所帮助!