Rest api как настроить

Содержание
  1. WP REST API – настройка и использование базовой аутентификации
  2. Что такое аутентификация?
  3. Аутентификация через WP REST API
  4. Как работает базовая аутентификация
  5. Установка плагина
  6. Отправка аутентифицированных запросов через Postman
  7. Отправка аутентифицированных запросов через командную строку
  8. Отправка аутентифицированных запросов через JavaScript
  9. Отправка аутентифицированных запросов через WP HTTP API
  10. Заключение
  11. Простой REST API в PHP — Пошаговое руководство
  12. 1. Обзор проекта
  13. 1.1 Что такое REST API?
  14. 1.2 Зачем нужен REST API?
  15. 1.3 Где используется REST API?
  16. 2. Файловая структура
  17. 3. Настройка базы данных
  18. 3.1 Создание таблицы категорий
  19. 3.2 Дамп данных для таблицы категорий
  20. 3.3 Создание таблицы товаров
  21. 3.4 Дамп данных для таблицы товаров
  22. 3.5 Подключение к базе данных
  23. 4. Получение товаров
  24. 4.1 Создание объекта Product
  25. 4.2 Создание файла для чтения товаров
  26. 4.3 Подключение к базе данных и таблице товаров
  27. 4.4 Чтение товаров из базы данных
  28. 4.5 Создание метода read()
  29. 4.6 Уведомление пользователя о том, что товары не найдены
  30. 5. Создание товаров
  31. 5.1 Создание файла create.php
  32. 5.2 Создание метода create()
  33. 6. Получение одного товара
  34. 6.1 Создание файла read_one.php
  35. 6.2 Создание метода readOne()
  36. 7. Обновление товара
  37. 7.1 Создание файла update.php
  38. 7.2 Создание метода update()
  39. 8. Удаление товара
  40. 8.1 Создание файла delete.php
  41. 8.2 Создание метода delete()
  42. 9. Поиск товаров
  43. 9.1 Создание файла search.php
  44. 9.2 Создание метода search()
  45. 10. Пагинация товаров
  46. 10.1 Создание файла read_paging.php
  47. 10.2 Создание файла core.php
  48. 10.3 Создание метода readPaging()
  49. 10.4 Создание метода count()
  50. 10.5 Получение массива пагинации
  51. 11. Получение категорий
  52. 11.1 Создание объекта Category
  53. 11.2 Создание файла read.php
  54. 11.3 Создание метода read()

WP REST API – настройка и использование базовой аутентификации

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

Читайте также:  Как открыть биос если не работает клавиатура виндовс 10

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

А если конкретнее, то мы:

  • рассмотрим различные методы аутентификации доступные при использовании плагина REST API;
  • настроим базовую аутентификацию на сервере;
  • отправим аутентифицированный запрос, используя Postman;
  • отправим аутентифицированный запрос, используя JavaScript framework;
  • отправим аутентифицированный запрос, используя командную строку;
  • отправим аутентифицированный запрос, используя WP HTTP API.

Но сначала давайте рассмотрим непосредственно аутентификацию.

Что такое аутентификация?

В самом простом варианте, аутентификация – это процесс определения личности персоны.

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

Когда мы говорим о WP REST API, то пользователь с достаточными привилегиями может выполнять различные CRUD задачи, такие как создание поста, получение всех пользователей сайта или отзыв прав пользователя. Но для всех этих действий он должен доказать свою личность серверу. Именно в этот момент в игру вступает аутентификация.

Аутентификация через WP REST API

WP REST API предоставляет три варианта аутентификации для конкретных целей. Этими вариантами являются:

  • базовая аутентификация;
  • OAuth аутентификация;
  • аутентификация по cookies.

На данный момент нативным способом аутентификации в WordPress является аутентификация по cookies. Именно так WordPress определяет личность пользователя и действия, которые он может выполнять. Для использования двух других методов аутентификации, указанных выше, мы должны установить их соответствующие плагины, которые предоставляются командой WP REST API на GitHub. Но есть надежда, что эти два метода также будут включены в ядро WordPress вместе с REST API плагином.

Базовая аутентификация – это самая простой тип HTTP аутентификации, в которой имя пользователя и пароль включаются в состав веб-запроса.

Как работает базовая аутентификация

В базовой аутентификации клиент запрашивает URL, который требует аутентификацию. Сервер опрашивает клиента (или user agent) для собственной аутентификации путём отправки кода 401-Not Authorized . В ответ на это клиент отправляет обратно такой же запрос, но уже с данными доступа в качестве строки, закодированной в base64 в формате username:password . Строка отправляется в заголовке Authorization :

Итак, если именем пользователя будет tutsplus и паролем 123456, то вместе с запросом будет отправлено следующее:

Так как закодированная в base64 строка может быть с лёгкостью раскодирована, этот метод очень небезопасен при использовании в открытых сетях. Этот метод должен использоваться только для отладки и разработки, когда соединение между сервером и клиентом безопасно.

Установка плагина

Как мы уже упоминали выше, плагин доступен на GitHub, и всё что нужно сделать, это клонировать его в нашу директорию plugins и активировать его.

Перейдите в директирию /wp-content/plugins/ и клонируйте плагин:

После клонирования плагина активируйте его из админки. Теперь мы можем использовать базовый метод аутентификации с плагином REST API.

Отправка аутентифицированных запросов через Postman

Большинство HTTP клиентов поддерживают отправку запроса с помощью базовой аутентификации, в том числе и Postman для Chrome. Для отправки аутентифицированного запроса, зайдите во вкладку Authorization:

Теперь выберите Basic Auth из списка. Далее необходимо указать ваше имя пользователя и пароль. После их ввода, нажмите на кнопку Update request

После обновления опции аутентификации вы увидите изменение во вкладке Headers, которая теперь включает поле заголовка с закодированной строкой:

Теперь вы можете выполнить тестовый запрос, требующий аутентификации, например, удаление поста:

Здесь dev-server – это путь до вашего сервера разработки.

Если всё прошло успешно, сервер вернёт код статуса 200 OK , который говорит о том, что пост с id равным 52 был удалён:

Отправка аутентифицированных запросов через командную строку

Для отправки аутентифицированных запросов мы можем использовать и командную строку. Нижеследующая команда curl равна запросу выше:

На сервер будет отправлен следующий запрос:

Опция —request определяет метод запроса, в нашем случае это DELETE . В качестве альтернативы вместо –request вы можете использовать –X .

Опция -I просто читает заголовки HTTP, которые были отправлены сервером. Альтернативой -I является опция —head .

Отправка аутентифицированных запросов через JavaScript

Если вы используете JavaScript фреймворк типа jQuery, то для отправки запроса вы можете использовать AJAX. Вот пример такого запроса при помощи метода jQuery.ajax() :

Здесь Base64 — это объект для кодирования и декодирования base64 строки.

В запросе выше мы устанавливаем заголовок Authorization с помощью метода setRequestHeader() объекта xhr , который мы передали в качестве аргумента в метод beforeSend() .

При этом на сервере заголовок Access-Control-Allow-Headers должен позволять поле Authorization . Это можно включить путём добавления следующей строки в файл .htaccess вашего WordPress:

После выполнения запроса в консоли браузера вы увидите ответ:

Статус кода 200 означает, что пост с id равным 52 был удалён успешно.

Отправка аутентифицированных запросов через WP HTTP API

Если вы удалённо взаимодействуете с другим WordPress сайтом из своего WordPress, то самым подходящим способом для отправки HTTP запросов будет WP HTTP API.

Следующий код отправляет запрос DELETE , на другой WordPress сайт с включенным WP REST API и базовой аутентификацией:

Мы используем функцию wp_remote_request() , которая принимает два аргумента:

  • $url : URL запроса
  • $args : массив дополнительных аргументов

В массиве $args мы определили method как DELETE , а headers представляет собой массив полей заголовка. В качестве ключа мы передали Authorization , а в качестве значения закодированную строку с именем пользователя и паролем.

Ответ будет сохранён в переменной $wp_delete_post_response , которую мы можем использовать с функциями wp_remote_retrieve_response_code() и wp_remote_retrieve_response_message() . Эти две функции являются хелперами в WP HTTP API, они извлекают из ответа код статуса и сообщение статуса соответственно.

Если пост удалён успешно, то мы увидем текст:

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

Заключение

В этом материале мы рассмотрели базовый метод HTTP аутентификации, поддерживаемый WP REST API. Однако он не должен использоваться на живых сайтах, так как закодированная в base64 строка может быть легко раскодирована и ваши имя пользователя и пароль могут попасть не в те руки.

После настройки и тестирования этого метода мы готовы сделать шаг вперёд и настроить более сложный вариант аутентификации – метод OAuth 1.0a. Мы сделаем это в следующем материале серии.

Источник

Простой REST API в PHP — Пошаговое руководство

В данной статье вы узнаете, как создать простой REST API в PHP.

  • 1. Обзор проекта
  • 1.1 Что такое REST API?
  • 1.2 Зачем нужен REST API?
  • 1.3 Где используется REST API?
  • 2. Файловая структура
  • 3. Настройка базы данных
  • 3.1 Создание таблицы категорий
  • 3.2 Дамп данных для таблицы категорий
  • 3.3 Создание таблицы товаров
  • 3.4 Дамп данных для таблицы товаров
  • 3.5 Подключение к базе данных
  • 4. Получение товаров
  • 4.1 Создание объекта Product
  • 4.2 Создание файла для чтения товаров
  • 4.3 Подключение к базе данных и таблице товаров
  • 4.4 Чтение товаров из базы данных
  • 4.5 Создание метода read()
  • 4.6 Уведомление пользователя о том, что товары не найдены
  • 5. Создание товаров
  • 5.1 Создание файла create.php
  • 5.2 Создание метода create()
  • 6. Получение одного товара
  • 6.1 Создание файла read_one.php
  • 6.2 Создание метода readOne()
  • 7. Обновление товара
  • 7.1 Создание файла update.php
  • 7.2 Создание метода update()
  • 8. Удаление товара
  • 8.1 Создание файла delete.php
  • 8.2 Создание метода delete()
  • 9. Поиск товаров
  • 9.1 Создание файла search.php
  • 9.2 Создание метода search()
  • 10. Пагинация товаров
  • 10.1 Создание файла read_paging.php
  • 10.2 Создание файла core.php
  • 10.3 Создание метода readPaging()
  • 10.4 Создание метода count()
  • 10.5 Получение массива пагинации
  • 11. Получение категорий
  • 11.1 Создание объекта Category
  • 11.2 Создание файла read.php
  • 11.3 Создание метода read()

1. Обзор проекта

1.1 Что такое REST API?

REST — это концепция (архитектура) для организации взаимодействия между независимыми объектами (приложениями) посредством протокола HTTP. Включает в себя набор принципов (рекомендаций) взаимодействия клиент-серверных приложений. Обычно он представлен в формате JSON.

API — интерфейс взаимодействия с каким-либо объектом (программой, приложением), включающий в себя набор правил, которые позволяют одному приложению общаться с другим. Эти «правила» могут включать в себя операции создания, чтения, обновления и удаления. Примером API может служить всем известная библиотека jQuery.

REST API позволяет вашему приложению взаимодействовать с одним или несколькими различными приложениями, используя концепции REST.

1.2 Зачем нужен REST API?

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

1.3 Где используется REST API?

REST API может использоваться любым приложением, которое может подключаться к Интернету. Если данные из приложения могут быть созданы, прочитаны, обновлены или удалены с помощью другого приложения, это обычно означает, что используется REST API.

2. Файловая структура

  • api/
    • config/
      • core.php
      • database.php
    • objects/
      • product.php
      • category.php
    • product/
      • create.php/
      • delete.php/
      • read.php/
      • read_paging.php/
      • read_one.php/
      • update.php/
      • search.php/
    • category/
      • read.php
    • shared/
      • utilities.php

3. Настройка базы данных

Используя PhpMyAdmin, создайте новую базу данных api_db . После этого выполните следующие SQL-запросы, чтобы создать новые таблицы с образцами данных.

3.1 Создание таблицы категорий

3.2 Дамп данных для таблицы категорий

3.3 Создание таблицы товаров

3.4 Дамп данных для таблицы товаров

3.5 Подключение к базе данных

Приведенный ниже код показывает учетные данные базы данных и метод для получения подключения к базе данных с помощью PDO.

Создайте папку api и откройте её. Создайте папку config и в ней создайте файл database.php со следующим кодом.

4. Получение товаров

4.1 Создание объекта Product

Код ниже содержит класс с именем Product и несколько свойств. Также показан метод конструктора, который принимает соединение с базой данных.

Мы будем использовать этот класс для чтения данных из базы. Откройте папку API . Создайте папку objects . Откройте папку её и создайте файл product.php . Поместите в него следующий код.

4.2 Создание файла для чтения товаров

Код ниже содержит заголовки о том, кто может читать этот файл и какой тип содержимого он будет возвращать.

В данном случае наш файл read.php может быть прочитан кем угодно (звездочка * означает все) и вернет данные в формате JSON .

Откройте папку API . Создайте в ней папку product . Откройте её и создайте файл read.php со следующим кодом.

4.3 Подключение к базе данных и таблице товаров

В приведенном ниже коде мы подключаем файлы database.php и product.php . Это файлы, которые мы создали ранее.

Нам нужно использовать метод getConnection() класса Database для получения соединения с базой данных. Мы передаем это подключение классу Product .

Замените комментарий // подключение к базе данных будет здесь в файле read.php следующим кодом.

4.4 Чтение товаров из базы данных

В приведенном ниже коде мы используем метод read() класса Product для чтения данных из базы. Через переменную $num мы проверяем, найдены ли записи.

Если найдены записи, мы перебираем их с помощью цикла while , добавляем каждую запись в массив $products_arr , устанавливаем код ответа 200 OK и показываем его пользователю в формате JSON.

Замените комментарий // чтение товаров будет здесь в файле read.php следующим кодом.

4.5 Создание метода read()

Мы использовали метод read() в предыдущем разделе, но он пока ещё не существует в классе Product . Нам нужно добавить этот метод. С помощью кода ниже, мы делаем запрос для получения записей из базы данных.

Откройте папку objects . Откройте файл product.php . Поместите следующий код в класс Product перед последней закрывающей фигурной скобкой вместо комментария // здесь будет метод read() .

4.6 Уведомление пользователя о том, что товары не найдены

Если переменная $num имеет нулевое или отрицательное значение, это означает, что из базы данных не возвращено никаких записей. Мы должны сообщить пользователю об этом.

В приведенном ниже коде мы устанавливаем код ответа 404 — Не найдено и сообщение, что Товары не найдены .

Замените комментарий // ‘товары не найдены’ будет здесь в файле read.php следующим кодом.

5. Создание товаров

5.1 Создание файла create.php

Откройте папку product и создайте в ней файл create.php со следующим содержимым.

5.2 Создание метода create()

Откройте папку objects . Откройте файл product.php и добавьте следующий код внутри класса Product (objects / product.php).

6. Получение одного товара

6.1 Создание файла read_one.php

Откройте папку product , создайте в ней файл read_one.php со следующим содержимым.

6.2 Создание метода readOne()

Откройте папку objects . Откройте файл product.php и добавьте следующий код внутри класса Product .

7. Обновление товара

7.1 Создание файла update.php

Откройте папку product , создайте в ней файл update.php и поместите в него следующий код.

7.2 Создание метода update()

В папке objects откройте файл product.php и добавьте новый метод update() внутри класса Product .

8. Удаление товара

8.1 Создание файла delete.php

Откройте папку product и создайте файл delete.php со следующим содержимым.

8.2 Создание метода delete()

В папке objects откройте файл product.php и добавьте новый метод в класс Product .

9. Поиск товаров

9.1 Создание файла search.php

В папке product создайте файл search.php со следующим кодом.

В папке objects откройте product.php и добавьте метод search() .

10. Пагинация товаров

10.1 Создание файла read_paging.php

В папке product создайте файл read_paging.php со следующим кодом.

10.2 Создание файла core.php

Этот файл содержит нашу базовую конфигурацию, такую как базовый URL и переменные пагинации.

Откройте папку config и создайте в ней файл core.php со следующим содержимым.

10.3 Создание метода readPaging()

В папке objects откройте файл product.php и добавьте метод readPaging() . Этот метод вернет список записей, ограниченный тем, что мы установили в $records_per_page фале core.php .

10.4 Создание метода count()

Так же в классе Product (файл product.php) добавьте метод count() для создания массива пагинации.

10.5 Получение массива пагинации

В корне создайте папку shared , в ней файл utilities.php со следующим кодом.

11. Получение категорий

11.1 Создание объекта Category

Откройте папку objects и создайте новый файл category.php со следующим кодом.

11.2 Создание файла read.php

Создайте новую папку category в корне, и в ней файл read.php со следующим кодом.

11.3 Создание метода read()

Откройте в папке objects файл category.php и создайте метод read() для класса Category .

Frontend часть данного приложения (продолжение) — jQuery + AJAX + JSON.

Если вам понравилась данная статья, рекомендую к прочтению создание регистрации и авторизации в php с использованием JWT.

Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.

Источник

Оцените статью