You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ember中创建无记录名包裹的请求以适配Rails API?

问题描述

我的后端Rails API要求接收的POST请求格式如下:

{
    "name": "Mark White",
    "email" : "mark@xyz.com"
}

已通过Postman测试,该格式可成功创建记录。

在Ember前端中,我使用以下代码通过表单输入创建新记录:

app/routes/addUser.js

import Ember from 'ember';

export default Ember.Route.extend({
  actions: {
        addUser(){
            let formData = {
                "name": this.controller.get('name'),
                "email": this.controller.get('email')
            };

            let newUser = this.store.createRecord('user',formData);
            newUser.save();
       }
  }

});

但这段代码生成的请求格式为:

{
  "user": {
    "name": "Mark White",
    "email" : "mark@xyz.com"
  }
}

后端无法处理该格式并抛出错误,请问有没有快速调整的方法,让Ember生成与Postman中可用格式一致的JSON请求?

解决方案

你可以通过自定义模型序列化器来修改请求的JSON结构,去掉外层的user包裹,具体步骤如下:

  • 在项目中创建app/serializers/user.js文件
  • 写入以下代码(两种方式二选一即可)

方式一:提取内层数据

import DS from 'ember-data';

export default DS.RESTSerializer.extend({
  serialize(snapshot, options) {
    let json = this._super(...arguments);
    return json.user;
  }
});

方式二:直接序列化不添加根节点

import DS from 'ember-data';

export default DS.RESTSerializer.extend({
  serializeIntoHash(hash, type, snapshot, options) {
    Object.assign(hash, this.serialize(snapshot, options));
  }
});

修改完成后,Ember发送的POST请求就会生成你需要的扁平JSON结构,和Postman测试的格式完全一致。

内容的提问来源于stack exchange,提问作者elrond2194

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:50:25