Getting started with REST using Zend Framework

Getting started with REST using Zend Framework

I was playing with SOAP for the last few days. I must say, it looks somewhat complicated in some areas. After some google-ing on SOAP vs REST stuff I decided to write this simple ZendFramework REST how to. Actualy this is a PHP part of tutorial since I was working on a PHP and C# solution using Mono framework for C# part can be found on my site. My desire was to create a web service in PHP environment and consume that service in C# environment.Getting started with REST using ZendFramework. Here’s the PHP REST server part.

Basic example is really, really simple. Aren’t they always. Seriously, it’s not my intention to go into outermost details.

Creating a REST server in ZendFramework can be simple as 3 lines of code. For the sake of simplicity, let’s suppose we’ll place all of our code logic in one file, the IndexController.php. The basic building block of each and every Zend Framework application. Code for creating a REST server looks like

public function restAction()
{
$server = new Zend_Rest_Server();
$server->setClass('CustomTestClass');
$server->handle();
 
exit;
}

Notice the CustomTestClass? This is the name of the class we wish to make availabe trough REST server. For the sake of simplicity, this class is placed in same file as our IndexController class. Below is the sample of class body

class CustomTestClass
{
/**
* Write to a file
*
* @param string $string
* @return string Some return message
*/
 
public function sayHello($name)
{
$message = 'Hello '.$name;
return $message;
}
}

Now all that’s left is to make a call to our REST server using GET method. Since our REST server code is placed inside restAction function in IndexController, it can be accessed using url like

https://inchoo.net/myzendapp/index.php/index/rest

And the result should look like

<?xml version="1.0" encoding="UTF-8"?>
<rest generator="zend" version="1.0">
<response>
<message>No Method Specified.</message>
</response>
<status>failed</status>
</rest>

direct_link_to_rest_with_no_params

Although these are error messages, it’s ok, it means our REST server is working. Now if we were to enter url like

https://inchoo.net/myzendapp/index.php/index/rest?method=sayHello

we would get response error message like

<?xml version=”1.0? encoding=”UTF-8??>
<CustomTestClass generator=”zend” version=”1.0?>
<sayHello>
<response>
<message>Invalid Method Call to sayHello. Requires 1, 0 given.</message>
</response>
<status>failed</status>
</sayHello>
</CustomTestClass>

direct_link_to_rest_with_method_assigned_but_no_params

This too is ok. It simply means we omited the parameters we were supose to pass to function. Remember, our sayHello function has signature like

public function sayHello($name)

meaning we should pass it a parameter $name. Now if we were to type into our browser url like

https://inchoo.net/myzendapp/index.php/index/rest?method=sayHello&name=Branko

We would get response like

<?xml version=”1.0? encoding=”UTF-8??>
<CustomTestClass generator=”zend” version=”1.0?>
<sayHello>
<response>Hello Branko</response>
<status>success</status>
</sayHello>
</CustomTestClass>

As I said, simple example, more like proof of concept. Hope you find it usefull as a entry point to REST-full Zend development.

You made it all the way down here so you must have enjoyed this post! You may also like:

Consuming Magento REST service using Zend_OAuth_Consumer Darko Goles
Darko Goles, | 45

Consuming Magento REST service using Zend_OAuth_Consumer

ZendFramework example on using Google URL Shortener service Branko Ajzele
Branko Ajzele, | 3

ZendFramework example on using Google URL Shortener service

Working with multiple PHP frameworks – The best practice Mladen Lotar
Mladen Lotar, | 16

Working with multiple PHP frameworks – The best practice

20 comments

  1. thanks so much , simple and great tutorial. thats what i needed to start with zend_rest_server

    thanks

  2. thanks for tutorial because its quite simple to understand, further i need your little help, how to call sayHello from c#. the link you provided is no more existing i think

  3. how would i pass a variable from the restAction to the CustomClass? i’m thinking of a variable passed via the url

    thanks

    b

  4. HI. i have a question. how do i do to use the zend rest client with an application made in ruby on rails? Thanks

  5. I have a plan to implement a REST api to my project. But my framework is not ZEND. It is so easy …

    Thanks, this post make me to think deep into the ZEND.

  6. Nice tutorial, helped me a lot… I’m now researching on how to handle authentication etc… 🙂

  7. hey,
    you really save me. your site was the last of my list to learn how to use zend_rest, cause i dont find any other articles about this. and what i found just say “its very simple, bla bla bla”. so when i implements on my local server give me “No Method Specified”. no matter how i google it i dont get answers. till now.
    now i will put qotsa to play and work hard cause have many thing to do with zend_rest
    thanks a lot

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <blockquote cite=""> <code> <del datetime=""> <em> <s> <strike> <strong>. You may use following syntax for source code: <pre><code>$current = "Inchoo";</code></pre>.

Tell us about your project

Drop us a line. We'd love to know more about your project.