Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Web services API: Difference between revisions

From MoodleDocs
Line 40: Line 40:
);
);
</code>
</code>
Finally don't forget to increment the version.php of your plugin on every changes, otherwise Moodle will not know about them.


== Example ==
== Example ==

Revision as of 07:30, 23 January 2012

Overview

The Web services API allows you to expose particular functions in your module (usually external functions) as web services.

Once you have done this, your functions will be available to admins to configure as part of their Web services over a given protocol like XML-RPC, REST or SOAP.

Exposing a web service function is done in one file: services.php

services.php

<?php

$functions = array(

       'local_PLUGINNAME_FUNCTIONNAME' => array( // local_PLUGINNAME_FUNCTIONNAME is the name of the web service function that the client will call.                                                                                
               'classname'   => 'local_PLUGINNAME_external', // create this class in local/PLUGINNAME/externallib.php
               'methodname'  => 'FUNCTIONNAME', // implement this function into the above class
               'classpath'   => 'local/PLUGINNAME/externallib.php',
               'description' => 'This documentation will be displayed in the generated API documentation 
                                         (Administration > Plugins > Webservices > API documentation)',
               'type'        => 'write', // the value is 'write' if your function does any database change, otherwise it is 'read'.
       )

);

  • The second array declare the pre-build services.

// OPTIONAL // During the plugin installation/upgrade, Moodle installs these services as pre-build services. // A pre-build service is not editable by administrator. $services = array(

       'MY SERVICE' => array(
               'functions' => array ('local_PLUGINNAME_FUNCTIONNAME'), 
               'restrictedusers' => 0, // if 1, the administrator must manually select which user can use this service. 
                                                  // (Administration > Plugins > Web services > Manage services > Authorised users)
               'enabled'=>1, // if 0, then token linked to this service won't work
       )

);

Finally don't forget to increment the version.php of your plugin on every changes, otherwise Moodle will not know about them.

Example

You will find an example of a services.php file in the web service template plugin. This plugin contains a web service hello_world function. To make testing easy for you, the plugin is distributed with a test client in the folder /client.

See also