Привет всем.
Вот хочу предложить небольшой пример реализации простого 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");
Вот собственно и все!
Исходники находятся здесь. Большое спасибо за внимание и просьба не судить строго. Если даже никому и не пригодится реализация, возможно статья возбудит интерес к самому фреймворку, а он действительно крут.