JSKOS API implementation (server and client)
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
src
tests
.editorconfig
.gitattributes
.gitignore
.scrutinizer.yml
.travis.yml
CHANGES.md
LICENSE.md
Makefile
README.md
composer.json
phpdox.xml
phpunit.xml.dist

README.md

jskos-http - JSKOS API implementation

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

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/.