In a RESTful design, choose of URLs for resources are really important. The URL uniquely represents a resource. Service consumers can change some parts in the URL to access different other resources. So it is clear that the URL consists of some constant parts which describe the resource group or catalog in general and some variable parts which have different and unique values for different resources.
As an example look at the following URL patterns
- students/{name} – The constant ‘students’ represent the students group in general and the variable ‘name’ is used to identify each student individually.
- students/{name}/marks/{subject} – The constants ‘students’ and ‘marks’ shows that this resource is a marks of some students, The two variables ‘name’ and ‘subjects’ addresses which student and marks of which subject is presented in the URL.
You can have a look at some of the uses of such mappings from RESTful School demo.
WSF/PHP allows you to create RESTful Web Services and further more RESTful Data Services in PHP.
In a RESTful Data Service you expose a database query as a web service. There you can write a prepared statement and feed arguments for the statement through the variable parameters of the URL. For an example take the RESTfulSchool Demo Code.
To retrieve a particular student, we can use the following prepared statement and the URL pattern ( This URL Pattern+Â HTTP ‘GET’ method is matched to execute this query. )
$sql = "SELECT * FROM Students where StudentName = ?" $get_students_with_name_url = array("HTTPMethod" => "GET", "RESTLocation" => "students/{name}");
So you can execute this prepared statement with the subject name ‘John’ using the following URL.
http://labs.wso2.org/wsf/php/solutions/RESTFulSchool/school_service.php/students/john
If your service is not exposing the database directly, then you have to choose the general web service API rather than the data service specific API. In there you will be able to write your business logic for publishing student information in a PHP function and expose it as a web service.
In such a cas,e your function is taking an argument which of type WSMessage. This structure hold an XML that contains values for all the variable parameters as in the users request URL. For an example for above REST Mapping, we can expect the following XML.
<getSubject> <name>Chemistry</name> </getSubject>
And your function to expose as a service, would be look like this,
function getSubject($input) { /* retrieve the subject name from the $input xml using simple xml */ $input_xml = new SimpleXMLElement($input->str); $subject_name = $input->name; /* write the logic to retrieve subject information for the $subject_name */ .... }
The link http://labs.wso2.org/wsf/php/resource_view.php?url=RESTfulSchool is broken.