这是我发出POST请求时从Ember js获得的JSON格式。我使用RestAdapter进行API调用。
`{
"programmer": {
"firstName": "Janaki",
"lastName": "Rathinam"
}
}`
但是我的春季靴只接受
{
"Programmer": {
"id": 1,
"firstName": "Maha",
"lastName": "Shankar"
}
}
如何解决这种不匹配的JSON,以便可以通过emberjs进行POST调用。 添加Serializer是否可以解决我的问题?如果是,我如何为此编写一个序列化器?
答案 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"
}
}