JSON, Сериализация
1. О формате JSON
JSON — JavaScript Object Notation. Он нужен для хранения и передачи структурированной информации.
Соотношение типов из python с типами из json:
JSON решает проблему общения между несколькими сервисами. Давайте рассмотрим такой пример: клиент приходит в магазин за стулом. Его не слишком волнуют габариты стула, он знает только примерно, что хочет высокий стул с мягкими подлокотниками тёмного цвета не дороже 5000 рублей, он передаёт эту информацию продавцу. Продавец, опираясь на документы, в которых описаны габариты, материалы и цвета предлагает несколько вариантов. Это очень простой пример клиент-серверного взаимодействия. В базе данных мы можем хранить любые сведения в любом удобном нам формате, но клиенту мы должны передавать её в понятном виде.
- https://semantica.in/blog/format-json-chto-eto-takoe-kak-sozdat-i-otkryt-fajl.html (Обзорная про JSON)
- https://www.w3schools.com/python/python_json.asp (Про работу с JSON в Python)
2. Сериализация
Сериализация - это процесс представления данных в виде строки.
Т.е. у нас есть определенный набор данных, который хранится в массиве или он представляет собой некий объект. Если провести процесс сериализации для этого набора данных, то этот набор данных мы представим в виде строки по какому-то определенному набору правил.
В зависимости от применяемого набора правил, на выходе мы получим некую текстовую строку, которая будет оформлена по каким-то правилам. Это набор правил называется форматом.
Чаще всего при сериализации данных они формируются в формате json.
Перевод данных в строку нужен для того и только для того, что в разных языках структуры данных могут отличаться. Приводя данные к какому-то единому формату, который может быть обработан любым языком программирования одинаково мы добиваемся стандартизации во взаимодействии между разнородными сервисами.
- https://m.habr.com/ru/company/infowatch/blog/312320/ (Сравнение сериализации в разных форматах для передачи данных)
- https://webkyrs.info/page/serializatsiia-dannykh (Обзорная статья про сериализацию)
3. Работа с сериализаторами
Давайте для начала попробуем написать свой сериализатор. На прошлой паре мы разбирали с вами метод values для получения словаря из объекта, который находится в Queryset. Давайте от этого и будем отталкиваться. Можно также поработать для начала в консоли.
В Django REST Framework есть несколько способов для работы с сериализаторами, давайте их все сейчас и обсудим.
Пример запроса через curl (на создание):
$ curl -X POST -d '{"profession": {"title": "Преподаватель", "description": "Тяжкий труд"}}' http://127.0.0.1:8000/api/profession/create/ -H "Content-type: application/json" {"Success":"Profession 'Преподаватель' created succesfully."}