• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Гостевая статья Что мы подразумеваем под API?

Чтобы определить это, API - это интерфейс прикладного программирования, но что это на самом деле означает? В более практическом смысле это один программист, скрывающий (возможно, грязные) детали своего собственного кода за красивым шрифтом, чтобы другому программисту было легче использовать его в своей собственной программе.

Во-первых, что такое интерфейс?
Прежде чем мы поговорим о программировании, что такое интерфейс в самом общем смысле? Мы абсолютно окружены ими и можем даже не осознавать этого большую часть времени. На самом деле, чем лучше интерфейс, тем меньше мы понимаем, что он вообще существует! Каждый раз, когда от нас отвлекается что-то сложное, скрывая сложные детали за небольшим экраном или простым нажатием кнопки, кто-то тратит время на то, чтобы создать интерфейс для нас.

Приборная панель в вашем автомобиле является хорошим примером. Есть интерфейс, который просто возвращает вам некоторую информацию, например, запуск отчета. Вам не нужно подсчитывать количество оборотов коленчатого вала в вашем двигателе - просто взгляните на датчик частоты вращения. А еще лучше, вы не должны помнить, хорошие или плохие 2000 или 6000 оборотов в минуту на определенных передачах - области датчика имеют цветовую маркировку. Вам не нужно вручную проверять уровень газа в баке или считывать выходные данные датчика низкого уровня топлива - вы получаете хорошее показание на приборной панели и специальный индикатор. Приборная панель - это интерфейс, абстрагирующийся от работы десятков датчиков по всему автомобилю.

Ваша кухня также полна интерфейсов, от тостера до микроволновой печи и кофемашины. Все эти устройства обычно требуют чуть больше одного или двух нажатий кнопок, чтобы запустить сложную цепочку внутренних движений, о которой нам не нужно беспокоиться. Можете ли вы представить себе, если бы вам приходилось заглядывать внутрь тостера и отключать его от сети, когда ваш хлеб был идеально поджарен? Или продолжаете бежать в подвал, чтобы включать и выключать печь? Это было бы смешно!

Какое отношение это имеет к программированию?
Языки программирования имеют свои собственные интерфейсы, которые также предоставляют уровни абстракции. Код часто организован в классы и модули, и затем отдельные части кода помечаются как «публичные» или «экспортированные», чтобы вы знали, что это те, которые безопасны в использовании.

Возьмем, к примеру, простой класс Person (в C #). Представьте себе, что есть класс PersonReport, который может отвечать на вопросы относительно группы людей, например, "кто взрослый?" или "кто родитель?" ,

Код:
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public List<Person> Children { get; set; }
}

public class PersonReport
{
    public List<Person> GetAdults(List<Person> persons)
    {
        return persons.Where(x => x.Age >= 18).ToList();
    }
    
    public List<Person> GetParents(List<Person> persons)
    {
        return persons.Where(x => x.Children.Count > 0).ToList();
    }
}


Как и в приборной панели в нашей машине, нам не нужно беспокоиться о деталях внизу. В этом случае «грязные детали» - это простая однострочная строка LINQ, но это может быть много строк, вызывающих другие методы и другие классы - дело в том, что нам все равно . Детали отделены чистым интерфейсом. Мы просто просим родителей и получаем результаты.

Так что же такое API?
Ну, это ... и многое другое. Давайте рассмотрим некоторый код, написанный другим разработчиком (возможно, другой командой в большой корпорации, но, возможно, совершенно другим лицом или компанией) и предоставленный нам в качестве платформы или библиотеки. Почти у каждого языка есть существующая структура. Это строительные блоки языка, а также тысячи или даже миллионы строк кода, которые не позволяют вам и мне изобретать одно и то же колесо снова и снова.

  • В C # это разработанный Microsoft.
  • В Erlang это библиотеки OTP от Ericsson.
  • У Java есть свои и множество других платформ.
  • ... и так далее
В приведенном выше примере кода даже вызов persons.Where(x => x.Children.Count > 0).ToList();вовлекал вызов API, в том смысле, что мне не нужно знать или заботиться о том, как библиотеке LINQ удается отфильтровать мой список лиц по определенному атрибуту. Я просто указываю условие для фильтрации и вызываю Where()функцию, которая выполняет свою магию.

API-вызовы в облаке и интерфейс REST
До сих пор я говорил о фреймворках и библиотеках, которые обычно копируются на ваш компьютер локально и компилируются или интерпретируются с остальной частью вашего приложения. Но что, если код находится в облаке? «Облако», конечно, просто забавный маркетинговый термин. Мы все еще говорим о коде, но он находится на чужом компьютере, а не на вашем, - это может быть современное оборудование или один человек, работающий из своего подвала. Итак, если у вас нет доступа к коду, чтобы скомпилировать его в свой собственный, как вы можете безопасно получить к нему доступ?


Это то, что большинство людей понимают под API сейчас, по крайней мере, большую часть времени. Во всем мире существуют тысячи сервисов, написанных на одном (или комбинации) из ста различных языков, и проблема в том, как поделиться всем этим с тем, что вы пишете на выбранном вами языке? Есть несколько способов, но самым популярным сейчас является интерфейс REST.

Время для резервного копирования снова на минуту.

Каждый раз, когда вы заходите на страницу в своем веб-браузере, он отправляет сообщение «GET» на URL-адрес страницы (например, « »), а взамен какой-либо веб-сервер где-то в мире (вы не важно, где и как) возвращает блок HTML-разметки, представляющей эту страницу для вас. Ваш браузер использует это и говорит: «Хорошо, есть тег таблицы, поэтому давайте добавим таблицу и тег blockquote, поэтому давайте отформатируем его так, как он должен выглядеть, и, о! Тег изображения». Он отображает страницу и выполняет больше операций «GET», чтобы получить все изображения и так далее, и так далее.

И если вы заполняете форму для регистрации на сайте, ваш браузер отправляет сообщение «POST» (или, возможно, «PUT») по некоторому URL-адресу, указанному в форме, например « ». и отправляет всю информацию, которую вы заполнили, как ваше имя, возраст и т. д. И если вы находитесь на странице, которая позволяет вам просматривать некоторые данные и удалять некоторые из них, то, возможно, когда вы нажимаете маленький значок корзины, он отправляет «УДАЛИТЬ msgstr "сообщение на определенный URL вместе с вашим идентификатором пользователя, и это удаляет некоторый ресурс на их сервере.

Если вы хотите увидеть что-то вроде аккуратного, скачайте и попробуйте выполнить «GET» на некоторых сайтах. Вы увидите разметку, которую ваш браузер получает при запросе сайта, и вы даже можете использовать этот инструмент для отправки запросов «POST» и «DELETE» на сайты, если вы знаете URL, который ожидает их.

postman-get.png



Я не хочу углубляться в то, как работает REST, но это обзор. И если он работает для браузера, он может работать и для нас. Наши программы могут использовать ту же идею для создания и обновления, получения или удаления всех видов данных из чужой программы «там в облаке». Ваша программа, работающая на вашем локальном компьютере, может вызвать и выполнить «GET» для определенной конечной точки (URL), такой как « », а другой сервер может обработать этот запрос и скажем «хорошо, они хотят конечную точку« пользователей », что означает, что я должен выполнить метод xyz (нам все равно, что) и получить данные для пользователя 1234 и вернуть что-то обратно». Разница в том, что вместо возврата html-разметки ваши данные будут возвращаться в формате JSON ... что-то еще

Так что все, что сказать, если кто-то спросит вас, что такое API ...

API - это некоторый код, работающий на чужой машине (где? Как? Кого это волнует!), Который они сделали доступным для вас. И способ, которым вы обычно получаете к нему доступ, использует REST, очень похоже на то, как это делает ваш веб-браузер!

Источник:
 
  • Нравится
Реакции: Vertigo
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!