Привет всем.
Вот хочу предложить небольшой пример реализации простого rest api на основе популярного фреймвокра Phalcon. Даже фаткически не реализацию, а её каркас. Сразу уточню что статья расчитана на новичков. Людей обознанных и опытных врядли заинтересует содержимое.
Phalcon предоставляет широкие возможности для разработки, а также очень большую свободу для творчества и создания хороших продуктов, потому пример действительно очень прост.
Фактически всё что надо — лишь создать конкретный экшн в контроллере, цель которого сделать return набора нужных данных, при этом роутинг строится на основе аннотаций к конкретному экшену, пример:
Что значит: URI /get доступен для GET запросов, /post для Post и тд. Ответ возвращает json представление значения, которое вернет экнш контроллера. Уточню что api поддерживает лишь json формат вывода, в то же время очень просто добавить новый лишь расширив метод RestController::prepareResponse.
Роутинг построен на аннотациях и поддерживает целый ряд форматов, которые можно найти тут.
Создавая новый конроллер, его необходимо пронаследовать от базового RestController и добавить описание в /config/ruotes.php:
Вот собственно и все!
Исходники находятся здесь. Большое спасибо за внимание и просьба не судить строго. Если даже никому и не пригодится реализация, возможно статья возбудит интерес к самому фреймворку, а он действительно крут.
Вот хочу предложить небольшой пример реализации простого rest api на основе популярного фреймвокра Phalcon. Даже фаткически не реализацию, а её каркас. Сразу уточню что статья расчитана на новичков. Людей обознанных и опытных врядли заинтересует содержимое.
Phalcon предоставляет широкие возможности для разработки, а также очень большую свободу для творчества и создания хороших продуктов, потому пример действительно очень прост.
Фактически всё что надо — лишь создать конкретный экшн в контроллере, цель которого сделать return набора нужных данных, при этом роутинг строится на основе аннотаций к конкретному экшену, пример:
<?php namespace RestApi\Api\Controllers; class IndexController extends RestController { /** * @Get("/get") */ public function getAction() { return ['getAction']; } /** * @Post("/post") */ public function postAction() { $this->setStatusCode(201); return ['postAction']; } /** * @Put("/put") */ public function putAction() { $this->setStatusCode(201); return ['putAction']; } /** * @Delete("/delete") */ public function deleteAction() { return ['deleteAction']; } }
Что значит: URI /get доступен для GET запросов, /post для Post и тд. Ответ возвращает json представление значения, которое вернет экнш контроллера. Уточню что api поддерживает лишь json формат вывода, в то же время очень просто добавить новый лишь расширив метод RestController::prepareResponse.
Роутинг построен на аннотациях и поддерживает целый ряд форматов, которые можно найти тут.
Создавая новый конроллер, его необходимо пронаследовать от базового RestController и добавить описание в /config/ruotes.php:
$router->addModuleResource("api", "RestApi\Api\Controllers\NewController");
Вот собственно и все!
Исходники находятся здесь. Большое спасибо за внимание и просьба не судить строго. Если даже никому и не пригодится реализация, возможно статья возбудит интерес к самому фреймворку, а он действительно крут.
