Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Программирование с помощью Yii2: создание RESTful API

by
Difficulty:IntermediateLength:ShortLanguages:
This post is part of a series called How to Program With Yii2.
How to Program With Yii2: Running Cron Services
Programming With Yii2: Building Community With Voting, Comments, and Sharing

Russian (Pусский) translation by Anna k.Ivanova (you can also view the original English article)

Final product image
What You'll Be Creating

В этой серии Программирование с помощью Yii2 я направляю читателей через использование фреймворка Yii2 для PHP. Вас также может заинтересовать мое введение в Yii Framework, в котором рассматриваются преимущества Yii и которое так же включает обзор нового в Yii 2.x.

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

Начало работы с REST API Yii

Построение REST API в Yii на самом деле довольно просто. Вы можете использовать существующий фреймворк MVC, но вы создаете отдельную точку доступа, к которой вы собираетесь обращаться различными службами (а не посетителями веб-сайта).

Преимущества Yii REST Framework

Yii Framework предоставляет широкую поддержку и подробную документацию для создания API-интерфейсов. Вот некоторые из встроенных возможностей при создании API:

  • Быстрое прототипирование с поддержкой общих API для Active Record. Это позволяет быстро и легко выявлять функциональность CRUD модели данных с помощью API.
  • Согласование формата ответа (поддержка JSON и XML по умолчанию). Существует встроенная поддержка для возврата данных в общие форматы вывода.
  • Настраиваемая сериализация объектов с поддержкой выбираемых полей вывода. Можно легко изменить, какие данные будут возвращены.
  • Правильное форматирование собранных данных и ошибок проверки.
  • Поддержка Hypermedia As The Engine Of Application State (HATEOAS)
  • Эффективная маршрутизация с правильной проверкой HTTP-глаголов.
  • Встроенная поддержка глаголов OPTIONS и HEAD.
  • Аутентификация и авторизация.
  • Кэширование данных и кеширование HTTP.
  • Ограничение рейтов.

У меня не будет возможности коснуться всего этого сегодня.

Мой интерес к REST API

В этом эпизоде я создам API, чтобы мы могли манипулировать таблицей Item, созданной в службе Twixxr, из этого учебника API Twitter. Но я также планирую создать API для нашей серии статей, посвященной Планировщику собраний. Для создания приложения iOS потребуется безопасный API. API будет поддерживать связь между мобильным приложением и облачным сервисом.

Создание REST контроллера

С помощью REST-фреймворка Yii мы создадим конечную точку для нашего API и организуем контроллеры для каждого типа ресурсов.

Ресурсы - это, по сути, модели данных нашего приложения. Они наследуются от yii\base\Model.

Класс yii\rest\UrlRule предоставляет готовую маршрутизацию, сопоставляющую нашу модель данных с конечными точками API CRUD:

Programming Yii2 REST API UrlRule Documentation of CRUD API endpoints

Создание дерева в качестве конечной точки API

В шаблоне Yii2 Advanced есть интерфейсное и back-end дерево, и это расширяемо. Чтобы отделить функции API, мы создадим третье дерево.

Разработчик Yii Алекс Макаров дает это полезное руководство по созданию дополнительных деревьев, которое я выполнил для создания моего третьего дерева:

Затем я использовал редактор Atom, чтобы выполнить глобальный поиск и заменить «backend» на «api» в новом дереве api.

И я добавил псевдоним api в /common/config/bootstrap.php:

Настройка маршрутизации URL для входящих запросов

В /api/config/main.php нам нужно добавить request[] для синтаксического анализа JSON и UrlRule для связывания методов для моделей и их конечных точек:

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

Примеры С cURL

Давайте начнем делать запросы.

Запрос OPTIONS

Покажите мне доступные методы API:

Вот ответ (GET, POST, HEAD, OPTIONS):

Запросы GET

Запрос: сколько есть данных?

Ответ: 576 записей на 29 страницах ...

Запрос: Покажите мне запись 15:

Ответ:

Запрос: Покажите мне все данные на странице 3:

Ответ:

Запросы DELETE

Ниже приведен пример запроса GET, за которым следует запрос DELETE, а затем последующая неудачная попытка GET:

Запросы на удаленную запись возвращают ошибку 404.

Запросы POST

Для моих запросов на почту я переключился на приложение Chrome Postman:

Programming With Yii2 Chrome Directory Postman Extension Landing Page

Войти в Postman было легко:

Programming With Yii2 Postmand Sign Up

И тогда я смог отправить запросы на свой localhost API в более удобном графическом интерфейсе:

Programming With Yii2 POST Request Shown in Postman UX

Затем я получил данные через curl, record 577:

Postman доказал свою важность для закругления моего тестирования, поскольку зависание командной строки было непросто настроить для отправки POST.

Заглядывая вперед

В дополнение к обзору быстрого старта с REST в документации Yii 2.0 содержится подробная информация о множестве других аспектов создания API:

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

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

Если у вас есть какие-либо вопросы или предложения, разместите их в комментариях ниже. Если вы хотите быть в курсе моих будущих учебных пособий Envato Tuts + и других сериалов, посетите мою страницу инструктора или подпишитесь на @reifman. Определенно проверьте мою серию про стартап и Планировщика встреч.

Ссылки по теме

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.