2017 © Pedro Peláez
 

cakephp-plugin webservice

Extremely simplistic webservices for CakePHP 3

image

muffin/webservice

Extremely simplistic webservices for CakePHP 3

  • Thursday, June 21, 2018
  • by jadb
  • Repository
  • 13 Watchers
  • 63 Stars
  • 29,662 Installations
  • PHP
  • 13 Dependents
  • 0 Suggesters
  • 29 Forks
  • 6 Open issues
  • 17 Versions
  • 13 % Grown

The README.md

Webservice

Build Status Coverage Total Downloads License, (*1)

Bringing the power of the CakePHP ORM to your favourite webservices., (*2)

Install

Using Composer:, (*3)

composer require muffin/webservice

You then need to load the plugin. You can use the shell command:, (*4)

bin/cake plugin load Muffin/Webservice

Usage

Datasource Configuration

In your app.php, add a new webservice config under Datasources:, (*5)

    'Datasources' => [
        // Other db config here
        'webservice' => [
            'className' => \Muffin\Webservice\Connection::class,
            'service' => 'Articles',
            // Any additional keys will be set as Driver's config.
        ],
    ],

If you are making a plugin then conventionally the datasource config key name should be underscored version of plugin name., (*6)

As an ORM

Create driver

<?php
namespace App\Webservice\Driver;

use Cake\Http\Client;
use Muffin\Webservice\Driver\AbstractDriver;

class Articles extends AbstractDriver
{
    /**
     * Initialize is used to easily extend the constructor.
     */
    public function initialize(): void
    {
        $this->setClient(new Client([
            'host' => 'example.com'
        ]));
    }
}

Create a webservice

<?php
namespace App\Webservice;

use Muffin\Webservice\Datasource\Query;
use Muffin\Webservice\Datasource\ResultSet;
use Muffin\Webservice\Webservice\Webservice;

class ArticlesWebservice extends Webservice
{
    /**
     * Executes a query with the read action using the Cake HTTP Client
     */
    protected function _executeReadQuery(Query $query, array $options = [])
    {
        $response = $this->getDriver()->getClient()->get('/articles.json');

        if (!$response->isOk()) {
            return false;
        }

        $resources = $this->_transformResults($query->endpoint(), $response->json['articles']);

        return new ResultSet($resources, count($resources));
    }
}

Create an endpoint (optional)

<?php
namespace App\Model\Endpoint;

use Muffin\Webservice\Model\Endpoint;

class ArticlesEndpoint extends Endpoint
{
}

Create a resource (optional)

<?php
namespace App\Model\Resource;

use Muffin\Webservice\Model\Resource;

class Article extends Resource
{
}

Use it

<?php
namespace App\Controller;

use Muffin\Webservice\Model\EndpointLocator;

class ArticlesController extends AppController
{
    // Either set the default model type to "Endpoint" or explicitly specify
    // model type in loadModel() call as shown below.
    protected $_modelType = 'Endpoint';

    public function index()
    {
        // This is required only if you haven't set `$_modelType` property to
        // "Endpoint" as shown above.
        $this->loadModel('Articles', 'Endpoint');

        $articles = $this->Articles->find();
    }
}

As base for a driver

You can also use this plugin as a base to a separate plugin or to manage custom webservice drivers connections., (*7)

Until official documentation is written, David Yell wrote a good [post to get you started][2]., (*8)

Implementations of webservices

As an ORM

The following plugins use the Webservice ORM to give you easy access to all kinds of webservices:, (*9)

  • GitHub plugin - Provides access to the GitHub REST APIs.
  • NS plugin - Provides access to the NS (Nederlandse Spoorwegen) APIs.
  • Stagemarkt plugin - Provides access to the SBB Stagemarkt REST APIs.
  • Twitter plugin - Provides access to the Twitter REST and streaming APIs.

As a driver

The following plugins implement a Webservice driver with their own methods:, (*10)

Patches & Features

  • Fork
  • Mod, fix
  • Test - this is important, so it's not unintentionally broken
  • Commit - do not mess with license, todo, version, etc. (if you do change any, bump them into commits of their own that I can ignore when I pull)
  • Pull request - bonus point for topic branches

To ensure your PRs are considered for upstream, you MUST follow the CakePHP coding standards., (*11)

Bugs & Feedback

http://github.com/usemuffin/webservice/issues, (*12)

License

Copyright (c) 2015-Present, [Use Muffin] and licensed under The MIT License., (*13)

The Versions

21/06 2018

dev-dev

dev-dev https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Requires

 

The Development Requires

orm api cakephp webservice muffin

12/06 2018

2.0.0-RC1

2.0.0.0-RC1 https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Requires

 

The Development Requires

orm api cakephp webservice muffin

26/04 2018

dev-master

9999999-dev https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

orm api cakephp webservice muffin

15/04 2018

1.3.0

1.3.0.0 https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

orm api cakephp webservice muffin

03/11 2017

1.2.0

1.2.0.0 https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

orm api cakephp webservice muffin

16/08 2017

dev-query-count

dev-query-count https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

orm api cakephp webservice muffin

01/02 2017

1.1.1

1.1.1.0 https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

orm api cakephp webservice muffin

30/01 2017

dev-3.4-test

dev-3.4-test https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

orm api cakephp webservice muffin

25/01 2017

1.1.0

1.1.0.0 https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

orm api cakephp webservice muffin

08/08 2016

dev-associations

dev-associations https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

api cakephp webservice muffin

08/08 2016

1.0.2

1.0.2.0 https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

orm api cakephp webservice muffin

03/04 2016

1.0.x-dev

1.0.9999999.9999999-dev https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

api cakephp webservice muffin

03/04 2016

1.0.1

1.0.1.0 https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

api cakephp webservice muffin

07/03 2016

dev-form-context

dev-form-context https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

api cakephp webservice muffin

23/02 2016

1.0.0

1.0.0.0 https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

api cakephp webservice muffin

17/09 2015

dev-fix-debugkit-integration

dev-fix-debugkit-integration https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

api cakephp webservice muffin

17/09 2015

v0.0.1

0.0.1.0 https://github.com/usemuffin/webservice

Extremely simplistic webservices for CakePHP 3

  Sources   Download

MIT

The Development Requires

api cakephp webservice muffin