PHPackages                             kodicms/laravel-api - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. kodicms/laravel-api

ActiveLibrary[API Development](/categories/api)

kodicms/laravel-api
===================

v1.0.5(10y ago)71.1k2[2 issues](https://github.com/KodiCMS/laravel-api/issues)1GNU GENERAL PUBLIC LICENSEPHPPHP &gt;=5.5.9

Since Aug 27Pushed 9y ago4 watchersCompare

[ Source](https://github.com/KodiCMS/laravel-api)[ Packagist](https://packagist.org/packages/kodicms/laravel-api)[ RSS](/packages/kodicms-laravel-api/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (6)Dependencies (1)Versions (7)Used By (1)

Laravel Framework REST API
==========================

[](#laravel-framework-rest-api)

Пакет разработан для удобства работы с API запросами. На данный момент этот модуль предоставляет всего лишь контроллер, с набором методов, которые помогут организовать работу с AJAX запросами.

Установка
---------

[](#установка)

```
composer require kodicms/laravel-api

```

### Добавить фасад в алиасы

[](#добавить-фасад-в-алиасы)

```
'RouteAPI' => KodiCMS\API\RouteApiFacade::class,
```

### Внести изменения в файл `app\Exceptions\Handler.php`

[](#внести-изменения-в-файл-appexceptionshandlerphp)

```
	...

	use KodiCMS\API\Http\Response as APIResponse;
	use KodiCMS\API\Exceptions\Exception as APIException;

	...

	/**
	 * Render an exception into an HTTP response.
	 *
	 * @param  \Illuminate\Http\Request $request
	 * @param  \Exception               $e
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function render($request, \Exception $e)
	{
		if ($request->ajax() OR ($e instanceof APIException)) {
			return (new APIResponse(config('app.debug')))
				->createExceptionResponse($e);
		}

		...
	}

```

Описание
========

[](#описание)

Контроллер
----------

[](#контроллер)

Контроллер необходимо наследовать от `KodiCMS\API\Http\Controllers\Controller`, после чего он начнет возвращать все ответы (ошибки и т.д.) в определенном формате с возможностью выбора типа ответа (`json`, `xml`, `yaml`):

**Пример ответа:**

```
{
	code: 200,
	content: '....',
	type: 'content',
	method: '...'
}
```

**Коды ответов:**

- `200` - ok
- `110` - не передан обязательный параметр в запросе
- `120` - ошибка валидации
- `130` - неизвестная ошибка
- `140` - ошибка токена
- `150` - попытка в модели установить значение защищенного поля
- `220` - ошибка прав доступа
- `403` - неавторизован
- `404` - страница не найдена

**Тип ответа**

- `error` - ошибка
- `content` - ответ
- `redirect` - редирект

**Пример ответов с различным кодом в `json` формате**

```
// 200
{
	code: 200,
	content: '....',
	type: 'content',
	method: '...'
}

// 200/Redirect
{
	code: 200,
	targetUrl: '....',
	content: '....',
	type: 'redirect',
	method: '...'
}

// 110
{
	code: 110,
	type: 'error',
	failed_rules: {...}, // поля, которые не прошли валидацию с текстом ошибки
	message: ... // текст ошибки
	...
}

// 120
{
	code: 120,
	type: 'error',
	errors: {...}, // текст ошибок
	failed_rules: {...} поля, которые не прошли валидацию с текстом ошибки
	...
}

// Другие ошибки
{
	type: 'error',
	message: ... // текст ошибки
	...
}

```

Полезные методы
---------------

[](#полезные-методы)

- `getParameter($key, $default = NULL, $isRequired = false)` - получение параметра переданного в запросе
- `getRequiredParameter($key, $rules = true)` - получение обязательного параметра, Вторым параметром можно указать правила валидации (`true == 'required'`), выбрасывает ошибку 110
- `setMessage($message)` - передача сообщения в ответ
- `setErrors(array $errors)` - передача ошибок в ответ
- `setContent($data)` - передача данных в ответ. Если передается `view`, то он будет преобразован в HTML

Полезные параметры
------------------

[](#полезные-параметры)

- `jsonResponse` - данные, которые будут переданы в ответ и преобразованы в JSON
- `requiredFields` - ожидаемые поля в виде `['action' => ['param1, 'param2']]`

Роутер
------

[](#роутер)

Для модуля API создан фассад `RouteAPI` который используется для добавления API роутов, который автоматически добавляет к новому маршруту возможность выбора типа ответа `json`, `xml`, `yaml`.

**API запрос можно выполнить следующим образом:**

- *site.com/api.refresh.key* =&gt; `json`,
- *site.com/api.refresh.key.json* =&gt; `json`,
- *site.com/api.refresh.key.xml* =&gt; `xml`,
- *site.com/api.refresh.key.yaml* =&gt; `yaml`

**Пример**

```
RouteAPI::post('refresh.key', ['as' => 'api.refresh.key', 'uses' => 'API\KeysController@postRefresh']);

// Что равнозначно
Route::post('api.refresh.key{type?}', ['as' => 'api.refresh.key', 'uses' => 'API\KeysController@postRefresh'])->where('type', '\.[a-z]');

```

---

**Пример контроллера с возвращением данных**

```
use KodiCMS\API\Http\Controllers\Controller;
class PageController extends Controller
{
	public function getSearch()
	{
		$query = $this->getRequiredParameter('search');

		...

		$this->setContent(view('pages.children'));
	}
}

// return JsonResponse

{
	code: 200,
	content: 'html data',
	method: 'get',
	type: 'content'
}

```

**Пример контроллера с возвратом данных в произвольной форме**

```
use KodiCMS\API\Http\Controllers\Controller;

class MessageController extends Controller
{
	public function sendMessage()
	{
		$message = $this->getRequiredParameter('message');

		...

		$this->testParam = '...';
		// или
		$this->jsonResponse['testParam'] = '...';

		$this->setMessage($message);
	}
}

// return JsonResponse

{
	code: 200,
	content: null,
	testParam: '...'
	type: 'content',
	method: 'post',
	message: 'message text'
}

```

**Пример контроллера с редиректом**

```
use KodiCMS\API\Http\Controllers\Controller;
class MessageController extends Controller
{
	public function sendMessage()
	{
		$message = $this->getRequiredParameter('message');

		...

		return redirect('...');
	}
}

// return JsonResponse

{
	code: 200,
	targetUrl: '....',
	content: '....',
	method: 'post',
	type: 'redirect'
}

```

**Пример контроллера с выводом HTML**

```
use KodiCMS\API\Http\Controllers\Controller;
class MessageController extends Controller
{
	public function sendMessage()
	{
		$message = $this->getRequiredParameter('message');

		...

		return view('.....');
	}
}

// return JsonResponse

'html content'

```

---

### Исключения

[](#исключения)

API модуль имеет свой класс исключений `KodiCMS\API\Exceptions\Exception` от которого лучше всего наследовать исключения, которые используются в API контроллерах. Данный класс содержит метод `responseArray`, в котором содержится список параметров, которые попадут в `Response`

```
/**
 * @var int
 */
protected $code = Response::ERROR_UNKNOWN;

public function responseArray()
{
	return [
		'code' => $this->getCode(),
		'type' => Response::TYPE_ERROR,
		'message' => $this->getMessage(),
	];
}

```

Пример кастомного класса исключений:

```
use KodiCMS\API\Exceptions\Exception;
use KodiCMS\API\Http\Response;

class ValidationException extends Exception
{
	/**
	 * @var int
	 */
	protected $code = Response::ERROR_VALIDATION;

	public function getFailedRules()
	{
		...
	}

	public function getErrorMessages()
	{
		...
	}

	/**
	 * @return array
	 */
	public function responseArray()
	{
		$data = parent::responseArray();
		$data['failed_rules'] = $this->getFailedRules();
		$data['errors'] = $this->getErrorMessages();

		return $data;
	}
}

```

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance14

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 80% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~34 days

Recently: every ~43 days

Total

6

Last Release

3744d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/773481?v=4)[Pavel Buchnev](/maintainers/butschster)[@butschster](https://github.com/butschster)

---

Top Contributors

[![butschster](https://avatars.githubusercontent.com/u/773481?v=4)](https://github.com/butschster "butschster (12 commits)")[![NelinD](https://avatars.githubusercontent.com/u/10078264?v=4)](https://github.com/NelinD "NelinD (2 commits)")[![Butochnikov](https://avatars.githubusercontent.com/u/4212297?v=4)](https://github.com/Butochnikov "Butochnikov (1 commits)")

### Embed Badge

![Health badge](/badges/kodicms-laravel-api/health.svg)

```
[![Health](https://phpackages.com/badges/kodicms-laravel-api/health.svg)](https://phpackages.com/packages/kodicms-laravel-api)
```

###  Alternatives

[darkaonline/l5-swagger

OpenApi or Swagger integration to Laravel

2.9k34.0M112](/packages/darkaonline-l5-swagger)[echolabsdev/prism

A powerful Laravel package for integrating Large Language Models (LLMs) into your applications.

2.3k388.3k10](/packages/echolabsdev-prism)[sburina/laravel-whmcs-up

WHMCS API client and user provider for Laravel

271.3k](/packages/sburina-laravel-whmcs-up)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
