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

Мы начнём с создания каталога /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');
    

Конфигурация и База Данных (БД) для REST API