All Projects → guzzle → Guzzle Services

guzzle / Guzzle Services

Licence: mit
Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, serialize requests, and parse responses into easy to use model structures.

Projects that are alternatives of or similar to Guzzle Services

Flexirest
Flexirest - The really flexible REST API client for Ruby
Stars: ✭ 188 (-16.81%)
Mutual labels:  api, rest
Fastapi Gino Arq Uvicorn
High-performance Async REST API, in Python. FastAPI + GINO + Arq + Uvicorn (w/ Redis and PostgreSQL).
Stars: ✭ 204 (-9.73%)
Mutual labels:  api, rest
Jsonapi Utils
Build JSON API-compliant APIs on Rails with no (or less) learning curve.
Stars: ✭ 191 (-15.49%)
Mutual labels:  api, rest
Lumen Microservice
Lumen on Docker - Skeleton project with Nginx, MySQL & PHP 7 | Aws ECS, Google Kubernates, Azure Container Engine
Stars: ✭ 183 (-19.03%)
Mutual labels:  api, rest
Symfony Flex Backend
Symfony Flex REST API template project
Stars: ✭ 214 (-5.31%)
Mutual labels:  api, rest
Apicheck
The DevSecOps toolset for REST APIs
Stars: ✭ 184 (-18.58%)
Mutual labels:  api, rest
Jikan Rest
The REST API for Jikan
Stars: ✭ 200 (-11.5%)
Mutual labels:  api, rest
Proteus
Lean, mean, and incredibly fast JVM framework for web and microservice development.
Stars: ✭ 178 (-21.24%)
Mutual labels:  api, rest
Magic
Create your .Net Core/Angular/Database CRUD Web apps by simply clicking a button
Stars: ✭ 214 (-5.31%)
Mutual labels:  api, rest
Express Api Es6 Starter
Build APIs with Express.js in no time using ES6/ES7/ESNext goodness.
Stars: ✭ 212 (-6.19%)
Mutual labels:  api, rest
Huobi java
Java SDK for Huobi Spot API
Stars: ✭ 180 (-20.35%)
Mutual labels:  api, rest
Bookmarks.dev
Bookmarks and Code Snippets Manager for Developers & Co
Stars: ✭ 218 (-3.54%)
Mutual labels:  api, rest
Graphql2rest
GraphQL to REST converter: automatically generate a RESTful API from your existing GraphQL API
Stars: ✭ 181 (-19.91%)
Mutual labels:  api, rest
Rest980
REST interface to control your iRobot Roomba 980 via local server on your lan.
Stars: ✭ 186 (-17.7%)
Mutual labels:  api, rest
Storefront Api
Storefront GraphQL API Gateway. Modular architecture. ElasticSearch included. Works great with Magento1, Magento2, Spree, OpenCart, Pimcore and custom backends
Stars: ✭ 180 (-20.35%)
Mutual labels:  api, rest
Hapi Openapi
Build design-driven apis with OpenAPI (formerly swagger) 2.0 and hapi.
Stars: ✭ 196 (-13.27%)
Mutual labels:  api, rest
Laravel Api Debugger
Easy debug for your JSON API.
Stars: ✭ 175 (-22.57%)
Mutual labels:  api, rest
Rrda
REST API allowing to perform DNS queries over HTTP
Stars: ✭ 176 (-22.12%)
Mutual labels:  api, rest
Verb
Organize and send HTTP requests from Emacs
Stars: ✭ 205 (-9.29%)
Mutual labels:  api, rest
Ray
a framework that helps you to deliver well-designed python APIs
Stars: ✭ 215 (-4.87%)
Mutual labels:  api, rest

Guzzle Services

License Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight Latest Stable Version Latest Unstable Version Total Downloads

Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, serialize requests, and parse responses into easy to use model structures.

use GuzzleHttp\Client;
use GuzzleHttp\Command\Guzzle\GuzzleClient;
use GuzzleHttp\Command\Guzzle\Description;

$client = new Client();
$description = new Description([
	'baseUri' => 'http://httpbin.org/',
	'operations' => [
		'testing' => [
			'httpMethod' => 'GET',
			'uri' => '/get{?foo}',
			'responseModel' => 'getResponse',
			'parameters' => [
				'foo' => [
					'type' => 'string',
					'location' => 'uri'
				],
				'bar' => [
					'type' => 'string',
					'location' => 'query'
				]
			]
		]
	],
	'models' => [
		'getResponse' => [
			'type' => 'object',
			'additionalProperties' => [
				'location' => 'json'
			]
		]
	]
]);

$guzzleClient = new GuzzleClient($client, $description);

$result = $guzzleClient->testing(['foo' => 'bar']);
echo $result['args']['foo'];
// bar

Installing

This project can be installed using Composer:

composer require guzzlehttp/guzzle-services

For Guzzle 5, use composer require guzzlehttp/guzzle-services:0.6.

Note: If Composer is not installed globally then you may need to run the preceding Composer commands using php composer.phar (where composer.phar is the path to your copy of Composer), instead of just composer.

Plugins

  • Load Service description from file [https://github.com/gimler/guzzle-description-loader]

Transition guide from Guzzle 5.0 to 6.0

Change regarding PostField and PostFile

The request locations postField and postFile were removed in favor of formParam and multipart. If your description looks like

[
    'baseUri' => 'http://httpbin.org/',
    'operations' => [
        'testing' => [
            'httpMethod' => 'GET',
            'uri' => '/get{?foo}',
            'responseModel' => 'getResponse',
            'parameters' => [
                'foo' => [
                    'type' => 'string',
                    'location' => 'postField'
                ],
                'bar' => [
                    'type' => 'string',
                    'location' => 'postFile'
                ]
            ]
        ]
    ],
]

you need to change postField to formParam and postFile to multipart.

More documentation coming soon.

Cookbook

Changing the way query params are serialized

By default, query params are serialized using strict RFC3986 rules, using http_build_query method. With this, array params are serialized this way:

$client->myMethod(['foo' => ['bar', 'baz']]);

// Query params will be foo[0]=bar&foo[1]=baz

However, a lot of APIs in the wild require the numeric indices to be removed, so that the query params end up being foo[]=bar&foo[]=baz. You can easily change the behaviour by creating your own serializer and overriding the "query" request location:

use GuzzleHttp\Command\Guzzle\GuzzleClient;
use GuzzleHttp\Command\Guzzle\RequestLocation\QueryLocation;
use GuzzleHttp\Command\Guzzle\QuerySerializer\Rfc3986Serializer;
use GuzzleHttp\Command\Guzzle\Serializer;

$queryLocation   = new QueryLocation('query', new Rfc3986Serializer(true));
$serializer      = new Serializer($description, ['query' => $queryLocation]);
$guzzleClient    = new GuzzleClient($client, $description, $serializer);

You can also create your own serializer if you have specific needs.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].