Методология REST Framework для разработчиков приложений

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

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

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

МЕТОДЫ

Основным принципом этой структуры, также называемой разработка приложений RESTful, является использование методов HTTP. REST относится к ресурсам, к которым можно получить доступ с помощью стандартного метода запросов и ответов. Вы отправляете запрос и получаете ответ. Это вызовы API, которые вызывают метод для выполнения процедуры на сервере и отправки результатов обратно клиенту.

Ниже приведены наиболее часто используемые методы HTTP.

GET
PUT
DELETE
POST

REST API использует конечные точки для связи между клиентом и сервером. Клиент использует методы HTTP для выполнения определенных вызовов для получения и хранения информации на сервере. Наиболее распространенный способ обмена данными - использование репрезентативного ресурса, который поддерживают все или большинство систем. Они используют такие форматы данных, как JSON, XMP или сериализованный PHP, среди других.

Если метод GET или POST используется с запросом правильно, он должен вернуть код состояния HTTP 200 OK. Для PUT или DELETE это либо 204 (без содержания), либо 201 (создано). (См. Коды состояния HTTP)

ЖЕТОНЫ ДОСТУПА И КЛЮЧ API

Если API не является общедоступным и открытым для всех разработчиков, некоторые компании ограничивают доступ к своим серверам. Это связано с тем, что они хранят конфиденциальную информацию, которая может быть предоставлена ​​только тем, у кого есть разрешение. Вы можете реализовать домен, как в Windows, чтобы предоставить разрешение пользователям, которые входят в систему, но в Интернете это другое.

Ключ API или токен доступа может быть предоставлен клиенту для авторизации доступа к ресурсу, в данном случае к серверу. Это предоставляется клиентским приложениям и недоступно для широкой публики. Пример использования ключа API показан в этом методе GET:

GET /resource?api_key=<value of API Key>

Ключ API может быть сгенерирован на веб-сайте поставщика. Обычно для этого требуется либо запрос по электронной почте поставщику, либо генерация ключа API, что можно сделать на веб-сайте поставщика. Это создает API-ключ и позволяет разработчикам начать создавать свое программное обеспечение с помощью вызовов API. Ключ API - это форма авторизации, которая предоставляет приложению разработчика доступ к системе, использующей конечную точку. Ниже приведен пример ключа API:

vaCELgL.0infnf8mVLWwsBbwjYr4Rx-Afh0dDqtly

Это похоже на строку символов, которая на самом деле является криптографическим хешем, созданным поставщиком, предоставляющим доступ к их системе. Ключ API - это не то же самое, что пароль, он отделен от него и даже может быть легко удален. Они также уникальны для каждого приложения и каждого пользователя, чтобы гарантировать, что они не будут использоваться повторно.

Следующий пример взят из Infobip, приложения для безопасного обмена сообщениями, о том, как сгенерировать ключ API.

POST https://{base_url}/settings/1/accounts/{accountKey}/api-keys

При этом используется метод POST, позволяющий пользователю сгенерировать {accountKey}, который создает ключ API. Создание ключа API разрешено для всех или доступно только по запросу, и причина этого в том, насколько конфиденциальны данные на сервере провайдера. Иногда данные не могут быть общедоступными, если у пользователя нет разрешения или авторизации (например, баланс банковского счета пользователя).

В Facebook приложение может запрашивать токен доступа для профиля пользователя. Когда пользователь предоставляет разрешение приложению, оно может получить токен доступа. Вот пример из JavaScript SDK.

<!DOCTYPE html>
<html>
<head><title>Get User Access Token</title></head>

<body>

  <h1>Get an Access Token using JavaScript SDK</h1>

 <p><a href="#" onClick="logInWithFacebook()">Log In with the JavaScript SDK</a></p>


  <script>

  <!-- Log User in -->

  logInWithFacebook = function() {
    FB.login(function(response) {
      if (response.authResponse) {
        alert('You are logged in & cookie set!');
        // Redirect the user to token.php file to use the token
        window.location.href = "https://your-url.com/token.php";
      } else {
        alert('User canceled login or did not fully authorize.');
      }
    });
    return false;
  };

  <!-- Initialize JS SDK to use JS helper to get access token -->

  window.fbAsyncInit = function() {
    FB.init({
      appId: '{your-app-id}',
      cookie: true, // This is important, it's not enabled by default
      version: 'v5.0'
    });
  };

  (function(d, s, id){
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement(s); js.id = id;
    js.src = "https://connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));

  <!-- Get user access token -->

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var accessToken = response.authResponse.accessToken;
  }
} );


</script>

</body>
</html>

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

ЗАПРОС

Запрос использует следующую структуру:

REST API Endpoint URL + API Method + Parameters

Чтобы понять формат структуры, рассмотрим пример с использованием API проверки электронной почты Trumail (общедоступный).

https://api.trumail.io/v2/lookups/{{format}}?email={{email}}

URL конечной точки REST API:

https://api.trumail.io/v2/lookups/ (здесь проходят запросы)

URL-адрес указывает протокол HTTPS (Secure HTTPS) с полным доменным именем api.trumail.io в каталоге v2 и подкаталоге поиска на внутреннем сервере. Протокол HTTPS защищает соединение между клиентом и сервером с помощью доверенного ЦС (центра сертификации), который выдает цифровой сертификат, подтверждающий действительность веб-провайдера (в данном случае Trumail). Это соединение с сквозным шифрованием для предотвращения утечек данных и атак MITM (Man-in-the-Middle).

Метод API:

API использует метод GET для получения информации об учетной записи электронной почты пользователя с указанным форматом ответа. Это записано в следующей структуре:

GET /v2/lookups

Параметры:

В конце строки вызова API находятся параметры. Начнем с {{format}}? параметр, который указывает возвращаемый тип.

Ниже приведены примеры форматов, которые могут быть возвращены:

  • JSON
  • XML
  • JSONP

Другие форматы включают:

  • МЫЛО
  • Сериализованный PHP
  • HTML

адрес электронной почты, который необходимо проверить, передается в качестве параметра методу. Это записано в следующей структуре:

email = {{email}}

Пример: если мы хотим проверить адрес электронной почты [email protected] с форматом ответа возврата в JSON, мы выполняем вызов API, используя следующую структуру:

https://api.trumail.io/v2/lookups/[email protected]

В примере от Trumail использовался открытый публичный API. Что делать, если поставщику информации требуется ключ API?

Чтобы представить запрос с использованием ключа API, можно взять пример из Emailchecker, основной компании, предоставляющей бэкэнд для Trumail. В их примере при использовании API-ключа используется следующая структура:

https://api.emailverifyapi.com/v3/lookups/{{format}}?email={{email}}&key={{API Key}}

Добавление параметра & key = {{API Key}} указывает, куда добавить API-ключ при выполнении запроса.

ОТКЛИК

Ниже приведен пример ответа на API проверки электронной почты Trumail.

{
 “address”: “[email protected]”,
 “username”: “xuser”,
 “domain”: “0xcode.com”,
 “suggestion”: “”,
 “validFormat”: true,
 “deliverable”: true,
 “fullInbox”: false,
 “hostExists”: true,
 “catchAll”: false,
 “gravatar”: false,
 “role”: false,
 “disposable”: false,
 “free”: false
}

Это в формате JSON, который можно анализировать и форматировать с помощью сценария для организации или извлечения данных. Ответ - это репрезентативная передача состояния ресурса, которая представляет собой информацию о ресурсе.

Из ответа мы видим, что адрес электронной почты (это только теоретический пример) существует из полей, помеченных как «hostExists»: true и «доставляемый»: true . Хотя это ответ для допустимого формата, недействительная учетная запись вообще не будет отображаться в таком виде. Существуют разные типы ответов в зависимости от конструкции API и поддерживаемых провайдером форматов.

ОБЗОР

REST - это архитектурная структура, которая используется как один из компонентов разработки программного обеспечения полного стека. Он обеспечивает стандартный способ запроса данных из приложения с использованием API, протокол передачи с использованием HTTPS (безопасность) и формат для обмена данными. Полученные данные представлены в формате ответа (например, JSON, XML и т. Д.), Который может понять приложение, что позволяет разработчику в дальнейшем преобразовать их в полезную информацию.

Хотя существует множество открытых общедоступных API, для других требуется одобрение поставщика и использование ключа API и токена доступа пользователя. Они предназначены для веб-сайтов, которые больше заботятся о конфиденциальности, которые хранят закрытые данные, такие как финансовая, личная и конфиденциальная информация.

Разработка приложений RESTful предоставляет стандартный способ создания веб-приложений. Определяя ресурсы в Интернете, REST предоставляет способ разрешить приложениям взаимодействовать со службами, используя протокол, который может использовать любой разработчик. Он предлагает разработчикам, как запрашивать информацию, позволяя использовать строки HTTP из веб-браузеров или консоли терминала для отправки запросов на сервер в качестве альтернативы кодированию в приложениях. Это помогает обеспечить гибкость и функциональную совместимость в Интернете через Интернет.