Что такое API. Формат JSON
Интерфейс (от англ. interface, «взаимодействие») — это средство взаимодействия со сложной системой. Регулятор громкости радиоприёмника — это интерфейс регулирования громкости, посредник между человеком и электронной системой.
Другой пример: графический интерфейс операционной системы компьютера. Мы решаем свои повседневные задачи, не задумываясь о внутреннем устройстве самой операционной системы. При перетаскивании иконки файла в «корзину» файл удаляется, в файловой системе происходят изменения.
API (от англ. Application Programming Interface, «программный интерфейс приложения») — это интерфейс для обмена данными. Слово «программный» означает, что интерфейс спроектирован в первую очередь для программ, и в этом смысле с системой взаимодействует не разработчик, а код, написанный им.
Вы уже работали с API во вводном курсе: Анфиса отправляла запрос к API и получала информацию о погоде на завтра.
API могут общаться друг с другом: например, ваш код запрашивает данные с API Яндекс.Маркета о появлении новых товаров, а Яндекс.Маркет в свою очередь обращается к API различных магазинов, чтобы эти данные получить. При этом каждый сервис может быть написан на своем языке программирования, но именно благодаря API они могут легко общаться между собой по сети, используя протокол HTTP и передавая данные в удобном для всех формате. Один из самых распространенных форматов передачи данных — JSON, он пришёл на смену формату XML.
JSON расшифровывается как JavaScript Object Notation (англ. «объектная запись JavaScript»). Так сложилось исторически: этот формат «вырос» из языка программирования JavaScript и он очень похож на тип данных dict, но более стандартизирован. Например, ключи нужно записывать только в двойных кавычках — в JSON это обязательно. Значениями ключей могут быть строки, числа, булевы значения, словари и списки. Некоторые типы данных не поддерживаются, например тип даты ("09-10-1988") записывается как строка.
Чтобы убедиться в том, что JSON правильно составлен, можно обратиться к любому онлайн-валидатору, например
вот к этомуВот как выглядят данные из картотеки супергероев, записанные в формате JSON:
Скопировать кодJSON
[
{
"name": "Captain America",
"realName": "Steve Rogers",
"yearCreated": 1941,
"powers": [
"Strength",
"Healing ability"
]
},
{
"name": "Spider-Man",
"realName": "Peter Parker",
"yearCreated": 1963,
"powers": [
"Danger sense",
"Speed",
"Jumping"
]
}
]
А вот пример этих же данных в формате XML (внешне этот язык чем-то похож на HTML, и это неслучайно: язык разметки веб-страниц — прямой потомок XML). Названия тегов в XML не стандартизированы, их можно называть по собственному разумению.
Скопировать кодXML
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<superhero>
<name>Captain America</name>
<realName>Steve Rogers</realName>
<yearCreated>1941</yearCreated>
<powers>Strength</powers>
<powers>Healing ability</powers>
</superhero>
<superhero>
<name>Spider-Man</name>
<realName>Peter Parker</realName>
<yearCreated>1963</yearCreated>
<powers>Danger sense</powers>
<powers>Speed</powers>
<powers>Jumping</powers>
</superhero>
</root>
JSON — один из наиболее популярных форматов обмена данными при работе с API, мы с ним будем много работать. Он проще для чтения и чуть меньше по размеру, чем такие же данные в XML.