divshot 的服务器端代理未在 Ember 应用程序中呈现 JSON api
Server side proxy for divshot not rendering JSON api in Ember app
我可以通过 运行 ember serve --proxy http://localhost:3000 启动我的 ember/rails 服务器。
我已经创建了一个 divshot 帐户,以便将此应用程序推送到生产服务器,但是我无法将 url 传递到我的 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
我完全不知道Divshot有这项服务。太棒了。
查看 the docs,您似乎需要将代理放在命名键下。
在他们的例子中是 "api"
:
{
"proxy": {
"api": {
"origin":"https://api.my-app.com",
"headers": {
"Accept": "application/json"
},
"cookies": false,
"timeout": 30
}
}
}
并通过 /__/proxy/{NAME}/{PATH}
:
形式的特殊 URL 访问它
$.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
希望对您有所帮助!
我可以通过 运行 ember serve --proxy http://localhost:3000 启动我的 ember/rails 服务器。
我已经创建了一个 divshot 帐户,以便将此应用程序推送到生产服务器,但是我无法将 url 传递到我的 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
我完全不知道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
希望对您有所帮助!