PHPackages                             archee-nic/decl-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. archee-nic/decl-api

AbandonedArchivedLibrary[API Development](/categories/api)

archee-nic/decl-api
===================

Декларативный API

1.7.4(5y ago)030proprietaryPHPPHP ^7.3

Since Apr 13Pushed 5y ago1 watchersCompare

[ Source](https://github.com/ArcheeNic/decl-api)[ Packagist](https://packagist.org/packages/archee-nic/decl-api)[ RSS](/packages/archee-nic-decl-api/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (6)Versions (6)Used By (0)

Декларативный API
=================

[](#декларативный-api)

Оглавление
----------

[](#оглавление)

- [О библиотке](#%D0%BE-%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%BA%D0%B5)
    - [Установка](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
    - [Описание](#%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5)
    - [Термины и определения](#%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D1%8B-%D0%B8-%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F)
    - [Приципы и архитектура](#%D0%BF%D1%80%D0%B8%D1%86%D0%B8%D0%BF%D1%8B-%D0%B8-%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0)
- [Создаём поинт](#%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC-%D0%BF%D0%BE%D0%B8%D0%BD%D1%82)
    - [Создание класса Request](#%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0-request)
    - [Создание класса Response](#%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0-response)
    - [Создание поинта](#%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BE%D0%B8%D0%BD%D1%82%D0%B0)
    - [Интеграция с laravel 5.4+](#%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%81-laravel-54)
- Примеры использования
    - [Использование поинтов](./tests/Unit/DeclApi/LogicTest.php)
    - [Использование поинтов в laravel 5](./tests/Unit/DeclApi/LogicTest.php)
    - [Создание документации](./tests/Unit/DeclApiDoc/MakeDocTest.php)
    - [Создание документации на Laravel 5](./tests/Unit/DeclApiDoc/CompleteDocL5Test.php)

О библиотке
-----------

[](#о-библиотке)

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

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

[к оглавлению](#%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5)

В composer проекта добавить строки

```
    "repositories": [
        {
            "type": "vcs",
            "url":  "gogs@gogs.inetpartners.org:archee-nic/decl-api.git"
        }
    ]

```

Далее в консоли можно написать `composer require archee-nic/decl-api`

### Описание

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

[к оглавлению](#%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5)

DeclApi - библиотека декларативного API

Это значит, что разработчик сначала описывает правила, по которым получается информация и отдается, а потом уже пишется сама логика

Библиотека реализована с максимальной изоляцией от любых фреймворков.

За счет того, что реализуется декларативная логика, есть возможность сгенерировать документацию и провести автоматический тест на работоспособность API.

За счет изоляции от фреймворков - переезд будет менее болезненен, а родительская архитектура будет той же

За счет того чтоб библиотека

### Термины и определения

[](#термины-и-определения)

[к оглавлению](#%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5)

EndPoint - URI с собственной логикой.

Класс EndPoint - класс с логикой эндпоинта

Объект API - класс набора данных в рамках одного уровня

Класс Request - объект API с информацией о входящих данных

### Приципы и архитектура

[](#приципы-и-архитектура)

[к оглавлению](#%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5)

`...`

Создаём поинт
-------------

[](#создаём-поинт)

### Создание класса Request

[](#создание-класса-request)

[к оглавлению](#%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5)

> Отличие Request от обычного Объекта, то, что у него в качестве входящих данных идут массивы групп полей: json, parameter (get,post), header

В папке App/Api создадим файл для работы с входящими данными ExampleRequest

```

```

Добавим правило для get/post передавемого параметра

```
    /**
     * @throws \Exception
     */
    protected function initRules()
    {
        parent::initRules();
        $this->rulesInfo()->add('parameter','integer','example','Пример поля','Пример описания поля')->setDefault(10)->setAttributes('required');
    }
```

### Создание класса Response

[](#создание-класса-response)

[к оглавлению](#%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5)

> Класс response - обычныый объект - ObjectClass, для порядка все-таки рекомендуется называть его с окончанием Response, чтобы было понятно назначение объекта

В папке App/Api создадим файл для работы с входящими данными ExampleRequest

```
