Свойства Dasherize для JSONAPI
У меня есть эта модель в моем бэкэнде drf:
class Product:
price_range = ...
Я использую EmberData с сериализатором JSONApi. Я только что узнал, что 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'
1 ответ
В блоге для Ember-Data 1.13
В выпуске Ember data команда пишет:
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 на домашней странице JSON API:
-"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 API относительно имен свойств в полезных нагрузках JSON, это всего лишь рекомендация. Посмотрите это обсуждение на GitHub относительно соглашения о наименовании для JSON API.