Download the PHP package archee-nic/decl-api without Composer

On this page you can find all versions of the php package archee-nic/decl-api. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package decl-api

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

Оглавление

О библиотке

Установка

к оглавлению

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

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

Описание

к оглавлению

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

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

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

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

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

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

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

к оглавлению

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

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

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

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

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

к оглавлению

...

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

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

к оглавлению

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

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

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

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

к оглавлению

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

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

Добавим правило для хранимого параметра

Создание поинта

к оглавлению

Будем рассматривать на примере laravel 5

В папке app/Http создадим подпапку Api В папке app/Http создадим подпапку Api

Название и расположение папки и файлов не имеет значения и ограничена только архитектурой и настройками фреймворка.

В Laravel 5 api.php использует в качестве основной папки для поиска целей роутов app/Http

Внутри папки создадим класс Endpoint ExamplePoint.php со следующим содержимым:

Обратите внимание на родительский класс PointL5Bridge - это мост для интеграции библиотеки в Laravel 5. Он является дочерним классом Point.

Если реализация будет требоваться в другом фреймворке - можно написать аналогичный мост и спользовать его. Так же можно использовать чистый Point

Теперь в созданный класс добавим метод

Над классом добавим используемые неймспейсы

Интеграция с laravel 5.4+

к оглавлению

Так как в качестве родителя мы использовали мост для laravel 5, нам не нужно писать какие либо особые правила или нстраивать связь для работы библиотеки

Добавим в api.php строку

Теперь наш Point будет вызываться при обращении по URI /api/example

Принцип работы

Кратко о структуре:

1. Endpoints

Для каждого endpoint создается класс с логикой вызываемой через handler.

Профит кратко: Строгость, предсказуемость, актуальная дока, повторное использование, самотестирование,

Профит подробно:

  1. Строгость: Ты не можешь вернуть просто строку или массив. Метод всегда ждет на return instance класса DeclApiObject, который отввечает за хранение данных.
  2. Предсказуемость: В DeclApiObject поисываются правила и поля. (типа validator). Если они отличаются от ожидаемых (например - лишние поля) - будет exception. Это гарантирует что, например при использовании Select * влоб - пользователь не получит лишние неожиданные данные.
  3. Актуальная дока: Генератор ориентируется на метод вызова, имя входящего класса и исходящего. И описанные (задекларированные) там поля и создает доку в формате OpenApi3 (технически заложена возможность расширить генератор до, например BluePrint формата). Поэтому пересоставлять доку всякий раз, когда ты меняешь api - не надо
  4. Повторное использование: Так как класс имеет одну самостоятельную логику с заранее согласованными данными на вход/выход, ее можно вызывать в консоли или вообще где хочется использовать.
  5. Самотестирование: По тому жо принципу что делается документирование, классы способны сгенерировать тестовые данные на вход и выход. А также попробовать исполнить код.

2. Мосты

Т.к. реализуемые классы Endpoints самодостаточны, они могут использоваться с "фишкой" роутингов laravel - когда для роута используется класс через __invoke Отсюда легкая интеграция с Laravel Аналогично и с разными доками. Общий стандарт позволяет генератору получить заранее готовые данные и кроить его уже на свой манер

3. Валидация

Для валидации поступающих полей используется illuminate/validation

Рекомендуемая структура файлов


All versions of decl-api with dependencies

PHP Build Version
Package Version
Requires php Version ^7.3
ext-json Version *
league/flysystem Version ^1.0
illuminate/validation Version >=5.4
illuminate/translation Version >=5.4
illuminate/filesystem Version >=5.4
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package archee-nic/decl-api contains the following files

Loading the files please wait ....