Download the PHP package phpsoftbox/api without Composer
On this page you can find all versions of the php package phpsoftbox/api. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download phpsoftbox/api
More information about phpsoftbox/api
Files in phpsoftbox/api
Package api
Short Description API description, error catalog and request version negotiation for PhpSoftBox
License MIT
Informations about the package api
PhpSoftBox API
Компонент описывает HTTP API, его публичные ошибки и правила выбора опубликованной версии запроса. Он не извлекает версию из URL и не зависит от структуры routes проекта.
Версии
Проект объявляет опубликованные версии enum-ом:
Policy содержит точный список и default:
Отсутствующий или пустой header выбирает default. Синтаксически корректная, но неопубликованная версия отклоняется: промежуточный диапазон не поддерживается.
Middleware сохраняет ApiRequestVersionInterface в request attributes и
добавляет selected/minimum/latest headers и Vary в response.
Ошибки
ApiErrorCatalog объединяет общие и специфичные определения и отклоняет
конфликтующие codes:
Endpoint может ссылаться только на зарегистрированные определения через
#[ApiErrors(...)]. Перед генерацией документации ссылки следует проверить через
ApiErrorCatalog::requireAll().
Для JSON runtime responses phpsoftbox/application предоставляет
CodedHttpException. Предметные исключения преобразуются в него через
ExceptionMapperRegistry; публичные status, code, title и message берутся из
ApiErrorDefinition.
Если phpsoftbox/application установлен, готовый
ApiVersionExceptionMapper преобразует ошибки negotiation в
CodedHttpException, добавляя minimum/latest headers и Vary. Application
указан как optional integration dependency: core versioning остаётся PSR-only.
Подключение в проекте
- Объявите enum опубликованных версий и policy.
- Соберите
ApiDescription, зарегистрировав common и project-specific errors. - Добавьте
ApiVersionMiddlewareтолько на versioned route group. - Зарегистрируйте
ApiVersionExceptionMapperв applicationExceptionMapperRegistry. - Передавайте выбранную версию в Action как
ApiRequestVersionInterfaceлибо проектный наследникAbstractApiRequestVersionс именованными feature gates.
Major в URL не входит в этот контракт. /v1, namespace контроллеров и набор
маршрутов остаются проектным routing-соглашением; опубликованную полную версию
определяет только policy подключённого API.
Auth audience
Если приложение выпускает отдельные credentials для нескольких API, стабильный
ApiDescription::id следует использовать как credential audience. Например,
credential с audience catalog принимается route group API catalog, но не API
warehouse.
API version и major в URL в audience не входят. Компонент Api только задаёт
идентификатор; выдача, хранение и проверка credentials остаются ответственностью
phpsoftbox/auth и проектного middleware.
Внешнему проекту после обновления также нужно учесть framework-изменения:
- JSON-ошибки Application получили обязательный
code; - Auth credential storage переименован и использует
subjectId/purpose/audience; X-RateLimit-Resetстал абсолютным Unix timestamp;- production rate limit следует переключить с
SimpleCacheRateLimiterна атомарный backend.
All versions of api with dependencies
psr/http-message Version ^2.0
psr/http-server-handler Version ^1.0
psr/http-server-middleware Version ^1.0