gbv / jskos-http
JSKOS API implementation (server and client)
Requires
- php: >=7.0
- gbv/jskos: ~0.3.2
- php-http/client-implementation: ^1.0
- php-http/discovery: ^1.0
- psr/cache: ^1.0
- psr/http-message: ^1.0
- psr/log: ^1.0
Requires (Dev)
- cache/array-adapter: ^1.0
- cache/simple-cache-bridge: ^1.0
- php-http/guzzle6-adapter: >=1.1.1
- php-http/mock-client: ^1.0
- phploc/phploc: ^4.0
- phpunit/phpunit: ^6.1
- theseer/phpdox: ^0.10.1
Suggests
- gbv/jskos-rdf: ^0.2
README
Requirements
Requires PHP 7.0 or PHP 7.1, package jskos, and any package listed as php-http/client-implementation.
Bugs and feature request are tracked on GitHub.
Installation
With composer
Install a php-http/client-implementation and the latest version of this package, e.g.:
composer require php-http/curl-client gbv/jskos-http
This will automatically create composer.json
for your project (unless it already exists) and add jskos-http as dependency. Composer also generates vendor/autoload.php
to get autoloading of all dependencies:
Usage and examples
See directory examples for example scripts and jskos-php-examples for an example application.
Client
See class Client
to query JSKOS API and get back Result
objects.
use JSKOS\Client; $client = new Client('http://example.org/'); $result = $client->query(['uri'=>$uri]); if (count($result)) { ... }
An optional Http\Client\HttpClient
can be passed as second argument. Use this for instance to log all HTTP requests:
$handler = \GuzzleHttp\HandlerStack::create(); foreach(['{method} {uri}', '{code} - {res_body}'] as $format) { $handler->unshift( \GuzzleHttp\Middleware::log( $logger, // e.g. Monolog\Logger new \GuzzleHttp\MessageFormatter($format) ) ); } $httpClient = \Http\Adapter\Guzzle6\Client::createWithConfig([ 'handler' => $handler, ]); $jskoClient = new Client('http://example.org/', $httpClient);
Server
Class Server
wraps a JSKOS Service
with PSR-7 HTTP message interfaces so it can be used with your favorite PSR-7 framework. An example with Slim:
$server = new JSKOS\Server($service); $app = new Slim\App(); $app->get('/api', function ($request) use ($server) { return $server->query($request); }); $app->run();
But there is no need to use an additional framework to support simple HTTP GET requests:
use JSKOS;
$server = new Server($service);
$response = $server->queryService($_GET, $_SERVER['PATH_INFO'] ?? '');
Server::sendResponse($response);
Author and License
Jakob Voß jakob.voss@gbv.de
JSKOS-HTTP is licensed under the LGPL license - see LICENSE.md
for details.
See also
JSKOS is created as part of project coli-conc: https://coli-conc.gbv.de/.
The current specification of JSKOS is available at http://gbv.github.io/jskos/.