Extremely simplistic webservices for CakePHP 3.
Using Composer:
composer require muffin/webservice:dev-master
You then need to load the plugin. You can use the shell command:
bin/cake plugin load Muffin/Webservice
or by manually adding statement shown below to boostrap.php
:
Plugin::load('Muffin/Webservice', ['bootstrap' => true]);
You can only use this plugin as a base to a separate plugin or to manage custom webservice drivers connections.
Until an official documentation is written, David Yell wrote a good post to get you started.
<?php
namespace App\Webservice\Driver;
use Cake\Network\Http\Client;
use Muffin\Webservice\AbstractDriver;
class Articles extends AbstractDriver
{
/**
* {@inheritDoc}
*/
public function initialize()
{
$this->client(new Client([
'host' => 'example.com'
]));
}
}
<?php
namespace App\Webservice;
use Cake\Network\Http\Client;
use Muffin\Webservice\Query;
use Muffin\Webservice\Webservice\Webservice;
class ArticlesWebservice extends Webservice
{
/**
* {@inheritDoc}
*/
protected function _executeReadQuery(Query $query, array $options = [])
{
$response = $this->driver()->client()->get('/articles.json');
if (!$response->isOk()) {
return false;
}
return $this->_transformResults($response->json['articles'], $options['resourceClass']);
}
}
<?php
namespace App\Model\Endpoint;
use Cake\Datasource\ConnectionManager;
use Muffin\Webservice\Model\Endpoint;
class ArticlesEndpoint extends Endpoint
{
}
<?php
namespace App\Model\Resource;
use Muffin\Webservice\Model\Resource;
class Article extends Resource
{
}
<?php
namespace App\Controller;
use Cake\Event\Event;
class ArticlesController extends AppController
{
public function beforeFilter(Event $event)
{
$this->loadModel('Articles', 'Endpoint');
}
public function index()
{
$articles = $this->Articles->find();
}
}
- 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.
http://github.com/usemuffin/webservice/issues
Copyright (c) 2015, [Use Muffin] and licensed under The MIT License.