从Ember js(Ember-cli)到Spring Boot应用程序的POST请求

时间:2018-10-10 10:42:39

标签: spring-boot ember.js

这是我发出POST请求时从Ember js获得的JSON格式。我使用RestAdapter进行API调用。

`{
   "programmer": {
      "firstName": "Janaki",
      "lastName": "Rathinam"
    }
 }`

但是我的春季靴只接受

{
    "Programmer": {
      "id": 1,
      "firstName": "Maha",
      "lastName": "Shankar"
    }
}

如何解决这种不匹配的JSON,以便可以通过emberjs进行POST调用。 添加Serializer是否可以解决我的问题?如果是,我如何为此编写一个序列化器?

1 个答案:

答案 0 :(得分:2)

您可以使用payloadKeyFromModelName覆盖传出请求的根密钥。默认情况下,RESTSerializer返回模型名称的驼色版本。

对于称为Programmer的模型,其modelName将为字符串programmer。 RESTSerializer将使用programmer作为JSON有效负载中的根密钥将其发送到服务器:

{
   "programmer": {
      "firstName": "Janaki",
      "lastName": "Rathinam"
    }
 }

对于您而言,您可能希望大写根对象:

首先运行$ ember generate serializer application,然后添加以下内容:

app / serializers / application.js

import DS from 'ember-data';
import { capitalized } from '@ember/string';

export default DS.RESTSerializer.extend({
  payloadKeyFromModelName(modelName) {
    return capitalized(modelName);
  }
});

结果将是大写字母P的根:

{
   "Programmer": {
      "firstName": "Janaki",
      "lastName": "Rathinam"
    }
 }

Ember文档:https://www.emberjs.com/api/ember-data/3.4/classes/DS.RESTSerializer/methods/payloadKeyFromModelName?anchor=payloadKeyFromModelName