ray / web-query
Web API access mapping framework for Ray.MediaQuery
1.x-dev
2025-07-30 09:57 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.2
- psr/http-message: ^2.0
- ray/aop: ^2.18
- ray/di: ^2.18
- ray/media-query: 1.x-dev
- rize/uri-template: ^0.3
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- phpmd/phpmd: ^2.15
- phpmetrics/phpmetrics: ^2.8
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5.46
- squizlabs/php_codesniffer: ^3.8
- vimeo/psalm: ^5.18 || ^6.0
This package is auto-updated.
Last update: 2025-07-30 09:57:53 UTC
README
Web API access mapping framework for Ray.MediaQuery.
Installation
composer require ray/media-query-web
Note: This package depends on ray/media-query
which provides the core database query functionality.
Usage
Web API Query
Create an interface with #[WebQuery]
attribute:
<?php use Ray\MediaQuery\Annotation\WebQuery; interface ApiInterface { #[WebQuery('api.get')] public function get(string $id): array; }
Create a web query configuration file web_query.json
:
{ "api": { "get": { "method": "GET", "path": "https://api.example.com/users/{id}" } } }
Install the module:
<?php use Ray\MediaQuery\MediaQueryWebModule; use Ray\MediaQuery\WebQueryConfig; use Ray\Di\Injector; $webConfig = new WebQueryConfig('web_query.json', ['domain' => 'example.com']); $module = new MediaQueryWebModule($webConfig); $injector = new Injector($module); $api = $injector->getInstance(ApiInterface::class); $result = $api->get('123'); // GET https://api.example.com/users/123
Features
- Web API Queries: Execute HTTP requests via interface methods
- URI Template Support: Dynamic URL parameter binding
- Multiple Response Types: JSON array, string, or PSR-7 message
- Parameter Injection: Automatic parameter conversion and injection
- HTTP Client Integration: Built on Guzzle HTTP client
Requirements
- PHP 8.1+
- ray/media-query ^1.0