对不同的后端服务器请求使用不同的余烬适配器

时间:2018-10-11 13:43:35

标签: ember.js

我有两个适配器application.jsexam.jsapplication.js用作默认适配器,它将向URL http://localhost:8000/api/发出请求。在另一种情况下,我需要向http://localhost:8000/exam/ URL发出请求。 为我建议一种可行的方法

/adapters/application.js

import DRFAdapter from './drf';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';

export default DRFAdapter.extend(DataAdapterMixin,{
    authorizer: 'authorizer:custom',
    host: 'http"//localhost:8000',

    pathForType() {
        return '';
    }
});

/adapters/exam.js

import DRFAdapter from './drf';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';

export default DRFAdapter.extend(DataAdapterMixin, {
    host: 'http://localhost:8000',
    namespace: 'exam',
    pathForType(){
        return 'e'
    }
});

/exam/controller.js

import Controller from '@ember/controller';

export default Controller.extend({

    actions:{

        addExam: function(id){
            var examName = this.get('examname');
            let list = this.store.createRecord('exammodel',{
                name : examName,
                owner : id
            });
            list.save();
        },
    }

});

/exam/template.hbs

<form>
  {{input placeholder="exam name" type="text" value=examname required="required"}}
  <button type="submit" {{action "addExam" model.id}}>Add Exam</button>
</form>

当我键入考试名称并按Submit时,它在控制台中显示一个错误,加载资源失败:服务器以400(错误请求)http://localhost:8000/api/ 的状态进行了响应表示我们仍在尝试访问localhost:8000/api/而不是localhost:8000/exam/

1 个答案:

答案 0 :(得分:3)

在端点名称和您要创建的模型之间似乎有点命名错误。

因此,您有/adapters/exam.js,但正在尝试createRecord('exammodel'

适配器名称必须与型号名称匹配-因此,适配器将需要命名为exammodel或对cerateRecord的调用应使用'exam`` instead of'exammodel'`。

希望这可以帮助您进步! :)