我的drf后端有这个模型:
class Product: price_range = ...
我在JSONApi序列化程序中使用EmberData。我刚刚发现JSON API需要使用反斜线属性。所以我需要告诉Drf:
JSON_API_FORMAT_KEYS = 'dasherize'
并且该属性被序列化为JSON
:
price-range
然后,EmberData
进行舞蹈,然后得到Ember
模型属性:
import DS from 'ember-data'; export default DS.Model.extend({ ... priceRange: DS.attr('number'), ... });
(如果我没记错的话,那是旧的RESTSerializer
期望)priceRange
JSON
因此,我们从price_range
-> price-range
-> priceRange
(如果您问我,这太疯狂了)。我通过反复试验发现了所有这些。对于drf,此处记录了相应的设置。
这哪里是记录了JSONApi
,EmberData
和Ember
?我想确保我已经真正理解了这一点,并且关系也是如此。相关的drf
配置设置为:
JSON_API_FORMAT_RELATION_KEYS = 'dasherize'
Oren Hizkiya.. 5
在该版本的博客文章中,Ember-Data 1.13
Ember数据团队写道:
JSONSerializer和RESTSerializer已被重构和简化以返回JSON API负载。
这意味着前进的Ember Data期望使用与JSON API一致的反斜线名称。请参阅JSON API建议,以获取成员名称的单词之间的破折号:
成员名称应仅包含字符“ az”(U + 0061至U + 007A),“ 0-9”(U + 0030至U + 0039)和连字符减号(U + 002D HYPHEN-MINUS,“-” )作为多个单词之间的分隔符。
并在JSON API主页上查看一些示例JSON:
-"attributes": { "first-name": "Dan", "last-name": "Gebhardt", "twitter": "dgeb" },
就模型而言,Ember 2.2.0的最新文档指出:
在Ember Data中,约定是将模型上的属性名称命名为驼峰
并给出了具有mutli-world属性名称的示例模型,这与预期的一样:
export default DS.Model.extend({ firstName: DS.attr('string'), lastName: DS.attr('string'), isPersonOfTheYear: DS.attr('boolean') });
虽然推荐的命名约定中肯定有很多改动,但我希望目前大多数这些更改都已成为现实。核心团队已经注意到。我相信可以围绕JSON API进行标准化,以便可以构建可互操作和可重用的工具,但是不幸的是,这些举措伴随着这些变化。
总结:在JSON中使用反斜线名称,在模型中使用驼峰式名称。
编辑:看来,尽管Ember Data团队采用了关于JSON有效负载中的属性名称的JSON API建议,但这仅仅是一项建议。请参阅GitHub上有关 JSON API 的反命名约定的讨论。
在该版本的博客文章中,Ember-Data 1.13
Ember数据团队写道:
JSONSerializer和RESTSerializer已被重构和简化以返回JSON API负载。
这意味着前进的Ember Data期望使用与JSON API一致的反斜线名称。请参阅JSON API建议,以获取成员名称的单词之间的破折号:
成员名称应仅包含字符“ az”(U + 0061至U + 007A),“ 0-9”(U + 0030至U + 0039)和连字符减号(U + 002D HYPHEN-MINUS,“-” )作为多个单词之间的分隔符。
并在JSON API主页上查看一些示例JSON:
-"attributes": { "first-name": "Dan", "last-name": "Gebhardt", "twitter": "dgeb" },
就模型而言,Ember 2.2.0的最新文档指出:
在Ember Data中,约定是将模型上的属性名称命名为驼峰
并给出了具有mutli-world属性名称的示例模型,这与预期的一样:
export default DS.Model.extend({ firstName: DS.attr('string'), lastName: DS.attr('string'), isPersonOfTheYear: DS.attr('boolean') });
虽然推荐的命名约定中肯定有很多改动,但我希望目前大多数这些更改都已成为现实。核心团队已经注意到。我相信可以围绕JSON API进行标准化,以便可以构建可互操作和可重用的工具,但是不幸的是,这些举措伴随着这些变化。
总结:在JSON中使用反斜线名称,在模型中使用驼峰式名称。
编辑:看来,尽管Ember Data团队采用了关于JSON有效负载中的属性名称的JSON API建议,但这仅仅是一项建议。请参阅GitHub上有关 JSON API 的反命名约定的讨论。