Download the PHP package gino-pane/nano-rest without Composer

On this page you can find all versions of the php package gino-pane/nano-rest. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package nano-rest

PHP Nano Rest

Latest Stable Version Build Status Maintainability Test Coverage Scrutinizer Code Quality SensioLabs Insight License Total Downloads

Easy-to-use self-containing lightweight package to deal with cURL requests.

Such packages as Guzzle are great of course, but they are too heavy for small projects. You don't need an overkill package for some easy stuff, and that's when something small and neat may help.

Requirements

Installation

Require the package using command line:

composer require "gino-pane/nano-rest:1.*"

or just put a new dependency in your existing composer.json and run composer install after that:

"require": {
    ...
    "gino-pane/nano-rest": "1.*"
}

Usage

Project's philosophy implies usage of RequestContext and ResponseContext objects. RequestContext aggregates request settings whilst ResponseContext contains response data.

Response context can be typed. Currently only JsonResponseContext available for JSON responses. Response type must be set explicitly by user. If no response type set, DummyResponseContext will be used.

Please take a look at examples below, which may clarify everything.

POST some data to endpoint

require './vendor/autoload.php';

$nanoRest = new NanoRest();

//create request context
$requestContext = (new RequestContext('http://httpbin.org/post')) //pass URL to constructor
    ->setMethod(RequestContext::METHOD_POST) //set request method. GET is default
    ->setRequestParameters([ //set some request parameters. They will be attached to URL
        'foo' => 'bar'
    ])
    ->setData('Hello world!') //set request data for body
    ->setContentType(RequestContext::CONTENT_TYPE_TEXT_PLAIN) //being set by default
    ->setHeaders([ // set some headers for request
        'bar' => 'baz'
    ])
    ->setResponseContextClass(JsonResponseContext::class); //explicitly set expected response type

$responseContext = $nanoRest->sendRequest($requestContext);

$responseContext->getHttpStatusCode(); //200
$responseContext->hasHttpError() //false

$responseContext->getArray();

/**
array(8) {
  'args' =>
  array(1) {
    'foo' =>
    string(3) "bar"
  }
  'data' =>
  string(12) "Hello world!"
  'files' =>
  array(0) {
  }
  'form' =>
  array(0) {
  }
  'headers' =>
  array(8) {
    'Accept' =>
    string(3) "*/*"
    'Accept-Encoding' =>
    string(13) "deflate, gzip"
    'Bar' =>
    string(3) "baz"
    'Connection' =>
    string(5) "close"
    'Content-Length' =>
    string(2) "12"
    'Content-Type' =>
    string(25) "text/plain; charset=UTF-8"
    'Host' =>
    string(11) "httpbin.org"
    'User-Agent' =>
    string(13) "php-nano-rest"
  }
  'json' =>
  NULL
  'origin' =>
  string(12) "93.85.47.181"
  'url' =>
  string(31) "http://httpbin.org/post?foo=bar"
}
*/

RequestContext provides setCurlOption/setCurlOptions which allow to override default cURL options and customize request for all your needs. Please examine source code and provided IntegrationTest carefully to get the whole idea.

Change the way how request query is generated

By default http_build_query encodes arrays using PHP square brackets syntax, like this:

?text[0]=1&text[1]=2&text[2]=3

But sometimes you'll want it to work like this instead:

?text=1&text=2&text=3

Or even in some other custom-defined way.

That's why setEncodeArraysUsingDuplication and setHttpQueryCustomProcessor methods were added to RequestContext:

$url = "http://some.url";
$data = ['text' => [1,2,3]];

$request = (new RequestContext($url))
            ->setRequestParameters($data)
            ->setEncodeArraysUsingDuplication(false);

$requestUrl = $request->getRequestUrl(); //http://some.url?text%5B0%5D=1&text%5B1%5D=2&text%5B2%5D=3

$request = (new RequestContext($url))
            ->setRequestParameters($data)
            ->setEncodeArraysUsingDuplication(true);

$requestUrl = $request->getRequestUrl(); //http://some.url?text=1&text=2&text=3

Method setHttpQueryCustomProcessor allows you to set your custom Closure that will be called on HTTP query string so you could process it as you wish. Initial request $data array will be passed to it as a second parameter.

$url = "http://some.url";
$data = ['text' => [1,2,3]];

$request = (new RequestContext($url))
            ->setRequestParameters($data)
            ->setEncodeArraysUsingDuplication(true);

$request->setHttpQueryCustomProcessor(
    function (string $query, array $data) {
        return str_replace('text', 'data', $query);
    }
);

$requestUrl = $request->getRequestUrl(); //http://some.url?data=1&data=2&data=3

Useful Tools

Running Tests:

php vendor/bin/phpunit

or

composer test

Code Sniffer Tool:

php vendor/bin/phpcs --standard=PSR2 src/

or

composer psr2check

Code Auto-fixer:

php vendor/bin/phpcbf --standard=PSR2 src/ 

or

composer psr2autofix

Building Docs:

php vendor/bin/phpdoc -d "src" -t "docs"

or

composer docs

Updating Cacert.pem:

    php bin/update-cacert.php

 or

    composer update-cacert

Changelog

To keep track, please refer to CHANGELOG.md.

Contributing

Please refer to CONTRIBUTING.md.

License

Please refer to LICENSE.

Notes

Powered by composer-package-template


All versions of nano-rest with dependencies

PHP Build Version
Package Version
Requires php Version ^7.1
ext-curl Version *
gino-pane/nano-http-status Version ^1.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package gino-pane/nano-rest contains the following files

Loading the files please wait ....