dan*_*ast 2 ember.js ember-data django-rest-framework json-api
我的drf后端有这个模型:
class Product:
price_range = ...
Run Code Online (Sandbox Code Playgroud)
我在JSONApi序列化程序中使用EmberData。我刚刚发现JSON API需要使用反斜线属性。所以我需要告诉Drf:
JSON_API_FORMAT_KEYS = 'dasherize'
Run Code Online (Sandbox Code Playgroud)
并且该属性被序列化为JSON:
price-range
Run Code Online (Sandbox Code Playgroud)
然后,EmberData进行舞蹈,然后得到Ember模型属性:
import DS from 'ember-data';
export default DS.Model.extend({
...
priceRange: DS.attr('number'),
...
});
Run Code Online (Sandbox Code Playgroud)
(如果我没记错的话,那是旧的RESTSerializer期望)priceRangeJSON
因此,我们从price_range-> price-range-> priceRange(如果您问我,这太疯狂了)。我通过反复试验发现了所有这些。对于drf,此处记录了相应的设置。
这哪里是记录了JSONApi,EmberData和Ember?我想确保我已经真正理解了这一点,并且关系也是如此。相关的drf配置设置为:
JSON_API_FORMAT_RELATION_KEYS = 'dasherize'
Run Code Online (Sandbox Code Playgroud)
在该版本的博客文章中,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"
},
Run Code Online (Sandbox Code Playgroud)
就模型而言,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')
});
Run Code Online (Sandbox Code Playgroud)
虽然推荐的命名约定中肯定有很多改动,但我希望目前大多数这些更改都已成为现实。核心团队已经注意到。我相信可以围绕JSON API进行标准化,以便可以构建可互操作和可重用的工具,但是不幸的是,这些举措伴随着这些变化。
总结:在JSON中使用反斜线名称,在模型中使用驼峰式名称。
编辑:看来,尽管Ember Data团队采用了关于JSON有效负载中的属性名称的JSON API建议,但这仅仅是一项建议。请参阅GitHub上有关 JSON API 的反命名约定的讨论。
| 归档时间: |
|
| 查看次数: |
1195 次 |
| 最近记录: |