7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Yii

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

Scroll to top
Read Time: 6 mins
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 imageFinal product imageFinal 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 endpointsProgramming Yii2 REST API UrlRule Documentation of CRUD API endpointsProgramming 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 PageProgramming With Yii2 Chrome Directory Postman Extension Landing PageProgramming With Yii2 Chrome Directory Postman Extension Landing Page

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

Programming With Yii2 Postmand Sign UpProgramming With Yii2 Postmand Sign UpProgramming With Yii2 Postmand Sign Up

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

Programming With Yii2 POST Request Shown in Postman UXProgramming With Yii2 POST Request Shown in Postman UXProgramming 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
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
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.