Skip to content

gbv/jskos-http

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

About

JSKOS API implementation (server and client)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published