
Backend
Создаём простой REST API на PHP
Предисловие
REST API - это основа современной веб-разработки. Большинство веб-приложений в наши дни создаются как одностраничные приложения с интерфейсом, связанным с внутренними API-интерфейсами, написанными на разных языках. Существует множество различных фреймворков, которые могут помочь быстро создать REST API.
В PHP наиболее известные это платформа API Laravel / Lumen и Symfony.
Они предоставляют отличные инструменты для обработки запросов и генерации ответов JSON с правильными кодами состояния HTTP. Они также упрощают решение распространенных проблем, таких как аутентификация / авторизация, проверка запросов, преобразование данных, разбиение на страницы, фильтры, и пр.
Однако для создания простого, но безопасного API вам определенно не понадобится сложный фреймворк. В этой статье я покажу вам, как создать простой REST API на PHP с нуля. Мы сделаем API безопасным, используя Okta в качестве нашего поставщика авторизации и реализуя поток учётных данных клиента.
Okta - это служба API, которая позволяет создавать, редактировать и безопасно хранить учётные записи пользователей и данные учётных записей пользователей, а также связывать их с одним или несколькими приложениями. В OAuth 2.0 существуют разные потоки аутентификации, в зависимости от того, является ли клиентское приложение общедоступным или частным, участвует ли в нём пользователь, или связь осуществляется только между машинами.
Оглавление
- Создание скелета приложения REST API
- Конфигурация и База Данных (БД) для REST API
- Создание Gateway Class для таблицы Пользователей
- Implement the PHP REST API
- Secure Your PHP REST API with OAuth 2.0
- Add Authentication to Your PHP REST API
- Build a Sample Client Application (Command Line Script) to Test the PHP REST API
- Learn More About PHP, Secure REST APIs, and OAuth 2.0 Client Credentials Flow
Создание скелета приложения REST API
Мы начнём с создания каталога /src и простого файла composer.json в верхнем каталоге только с одной зависимостью (на данный момент): библиотекой DotEnv, которая позволит нам хранить наши данные аутентификации Okta в файле .env вне репозиторий кода: composer.json
{ "require": { "vlucas/phpdotenv": "^2.4" }, "autoload": { "psr-4": { "Src\\": "src/" } } }
Также настраивается автозагрузчик PSR-4, который будет автоматически искать классы PHP в каталоге /src. После чего устанавливаются зависимости:
composer install
Был создан каталог /vendor и установлена зависимость DotEnv (также можно использовать автозагрузчик для загрузки других классов из /src без вызова include()).
Далее создаётся файл .gitignore для данного проекта. В нём прописываются каталог /vendor и локальный файл .env, которые будут проигнорированы при загрузке в репозиторий:
vendor/ .env
Затем создается файл .env.example для переменных аутентификации Okta:
.env.example
С содержимым:
OKTAAUDIENCE=api://default OKTAISSUER= SCOPE= OKTACLIENTID= OKTASECRET=
и файл .env, в который позже будут записаны оригинальные данные из учётной записи Okta (файл будет проигнорирован Git, и не попадет в репозиторий).
>С помощью файла bootstrap.php, загружаются переменные среды (позже он также выполнит дополнительную загрузку для проекта).
bootstrap.php
load(); // test code, should output: // api://default // when you run $ php bootstrap.php echo getenv('OKTAAUDIENCE');