当前位置:  开发笔记 > 前端 > 正文

Dasherize JSONAPI的属性

如何解决《DasherizeJSONAPI的属性》经验,为你挑选了1个好方法。

我的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期望)priceRangeJSON

因此,我们从price_range-> price-range-> priceRange(如果您问我,这太疯狂了)。我通过反复试验发现了所有这些。对于drf,此处记录了相应的设置。

这哪里是记录了JSONApiEmberDataEmber?我想确保我已经真正理解了这一点,并且关系也是如此。相关的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 的反命名约定的讨论。



1> Oren Hizkiya..:

在该版本的博客文章中,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 的反命名约定的讨论。

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有