Здравствуйте и хорошейте, дорогой друг!
За набором текста Тюрин Роман и это канал Симпличные условия, где о сложном говорится просто. Тема выпуска будет интересна начинающим программистам, которые только сталкиваются с понятием библиотеки и документации, стремясь узнать, как и что в ней работает.
Для разбора я возьму два разных ресурса: Telegram bot API и что-то на русском языке - библиотеку Django для создания веб-приложений. Обязательно дочитывай ее до конца!
Поднять паруса: начинаем!
Состав статьи:
- Что еще за API?
- При чем здесь интерфейс?
- Так чего там по библиотекам-то?
- Немного про Telegram bot API
- Буквально чуток про Django
- Долистав до конца...
Что еще за API?
API расшифровывается как Application Programming Interface и переводится как Программный Интерфейс Приложения. По причине того, что русская аббревиатура ПИП звучит не слишком солидно и даже немного уничижительно, используется больше его английский друг-аналог. Но мы с тобой люди простые - будем иногда называть его ПИП.
Чтобы написать этот текст для тебя, Я разбил его на отдельные главы. Так его проще воспринимать, лучше выделяется главная мысль (в данной главе - это понятие API), а затем эта главная мысль проносится через остальные части текста, где обрастает деталями аки маленький снежный ком, становящийся большим при скатывании с горы. Программы по-хорошему, тоже должны разбиваться на части: если ты хочешь создать программу "Список дел", то в ней будут отдельные части, отвечающие за отдельный функционал: создание дела, изменение дела, просмотр его, удаление, ну и внешний вид.
И этим частям нужно как-то между собой общаться: нам же нужна программа из всех частей! И вот тут входит в дело API - это некая договоренность отдельный частей программы (функций), как они работают с данными. Состоит ПИП из трех вещей: что-то приходит на вход, дальше творится магия функции, и что-то приходит на вывод.
При чем здесь интерфейс?
На этом этапе ты задаешься вопросом: допустим, что API - это общение программ - но при чем здесь интерфейс в расшифровке "Программный интерфейс приложений"? Здесь я должен спросить тебя: а что ты вкладываешь в понятие "интерфейс"?
Возможно, есть предположение, что интерфейс - это внешний вид приложения. Нет. Интерфейс - это то, как ты с ним взаимодействуешь. К примеру, есть автомобиль. У него есть прямой функционал возить твое тело из точки А в точку Б. Возможно, ты можешь его водить, возможно, кто-то делает это за тебя, но ты точно знаешь, что для работы ему нужен бензин, нужно вставить ключ зажигания, нужно нажать на педаль газа, крутить руль...Вот это всё и есть интерфейс автомобиля. Тебе не важно, что когда ты нажимаешь на педали, работают некие механизмы, которые приводят в действия вращение осей автомобиля и их блокировку, тебе не нужно знать, как устроен двигатель внутреннего сгорания, тебе нужно лишь знать, как управлять машиной. Руль, педали - это интерфейс, через который ты с автомобилем взаимодействуешь. Бензин, масло, ключ зажигания - это всё входные данные. То, что машина едет - это выходные данные.
Давай я заражу тебя "Мыслеболезнью ПИПопределения": когда смотришь на какой-то предмет, определяй, какой у него интерфейс, какие входные и выходные данные: попробуй выдели эти составляющие у таких вещей, например, как микроволновка, лампа и динамик. Я уверен, тебе понравится.
Так чего там по библиотекам-то?
Есть в программировании такой термин - инкапсуляция. Это когда мы скрываем реализацию кода. Когда пользователю всё понятно. Нажал на кнопочку - всё получилось. А то, что под капотом у этой бедной кнопочки работает несколько функций, что она обращается к какой-то базе данных, написана на каком-то языке программирования - неважно.
Вспомни тот же чат в телеграме. Задумывались ли вы, что происходит, когда вы дописав сообщение, нажимаете на кнопку в виде треугольника для отправки? Ваш пип по кнопке заставил работать ПИП. Причем согласись, реально же ведь не задумывались мы с тобой, как происходит отправка сообщения? Я выделил этот процесс ссылкой на документацию, но она всего-лишь называет это sendMessage. Мы понятия не имеем, какая там база данных, какой язык программирования, каким протоколом обрабатывается, как эти данные отправляются через сервер, хранятся они там или нет, шифруются или нет, мы знаем только что есть GUI (Graphical User Interface) - эта милая кнопочка, и есть API - функция sendMessage, которая это сообщение отправляет. И в этом весь смысл.
Немного про Telegram bot API
У телеграм-бота есть две документации: одна официальная, другая - специально для Python. Рассмотрим официальную.
Сначала идет название API - какой-то функции или переменной, дальше - что она значит, и три поля: Field (Поле), Type(Тип данных), Description (описание).
На картинке выше сначала говорится, что мы имеем в виду InputMediaAudio. Я его взял из раздела Available types(доступные типы данных), а соответственно, это - тип данных. Голосовое сообщение, если точнее. Опять же, реализация того, как звук вообще хранится и кодируется, инкапсулирована и скрыта от нас. Но у нас есть описание того, что это и как с этим работать.
Если использовать поле type, то, судя по описанию, выведется тип данных, который "must be audio": выведется, что это аудиофайл. Если использовать поле media, то это будет строка с файлом, который нужно отправить. Зная эту информацию, мы можем передать эту информацию API отправки сообщения, и оно отправит аудиофайл.
И если на официальном сайте написана информация, которая может использоваться всеми языками программирования, то в документации Python эта же информация - для использования на языке Python, все названия просто сохранены.
Здесь уточняется, что это является классом и основано на классе InputMedia - из названия понятно, что это файлы, приходящие от пользователя: аудиосообщение, текстовое сообщение... Чтобы понять, как использовать этот класс, нужно обладать знаниями про ООП в программировании. Это - отдельная тема для разговора.
audio_message = telegram.InputMediaAudio(media = "serverTelegram/romturino/my_audio_message.wav")
Для знающих ООП - это метод, для иных - это функция, но главное - это API отправки сообщения. Попробуй по этому тексту ответить на вопросы:
Буквально чуток про Django
Джанго - это фреймворк (несколько библиотек в одной) для создания веб-приложений. У нее отличный идеал документации, по крайней мере, на русском языке.
Здесь все API разделены по разделам, а главная страница ведет на страницы с этими разделами. В документациях часто есть разделы "Первые шаги" или "Tutorial", с помощью которых можно начать осваивать библиотеку самостоятельно. В них ты найдешь инструкции, что и как делать.
Взгляни на другие разделы. Например, формы.
Допустим, у нас есть форма:
Нам нужны данные, полученные из формы. Зайдем в API форм.
По ссылке - очень подробный пример использования cleaned_data. Опять же, нам не столь важно, как это работает, важно только, что это дает в итоге, и как этим воспользоваться.
Заметь: в своей функции пост, я создал объект form - это сама форма, в скобках у нее - результат POST-запроса (запрос создания новой записи), далее идет проверка этой формы на валидность и....вот оно. Я беру и извлекаю данные из формы. Функция print выведет вот это:
Дальше мне нужно лишь рассовать эти значения по переменным и вуаля: отзыв можно вставлять на сайт.
Долистав до конца...
Итак, давай резюмируем:
- У всего есть интерфейс - то, как предмет можно использовать;
- У программы тоже это есть, аж на двух уровнях: GUI - графический интерфейс (кнопки, текстовые поля, графические плюшки и булочки) и API - то, как это выглядит на уровне кода;
- API - это инкапсуляция какого-то сложного кода в одной небольшой кнопочке, только уже для программиста - функции;
- API состоит из трех элементов: входных данных, работящей функции и выходных из нее данных;
- Документация дает название кем-то написанной функции, описание, что она делает, что принимает и что возвращает, а также подробное описание типов этих параметров;
- Самое сложное во всем этом - правильно комбинировать и употреблять эти вещи, на них и рассчитаны все обучающие ресурсы.
С тобой был Тюрин Роман, канал Симпличные условия, где о сложном говорится просто. Благодарю тебя, что ты видишь этот текст в конце, ты - самый лучший или самая лучшая! Не забудь поставить лайк этой статье, сработает API который приведет в действие счетчик лайков и счетчик моего эмоционального удовлетворения.
Если есть какие-то вопросы по теме или предложений по разъяснению каких-то сложных вещей или понятий, необязательно связанных даже с программированием, то пиши об этом в комментариях.
Доброго здоровьица!