In RESTful paradigm we give a piece of data ( or in other word ‘Resource’) a unique URL. And in order to manipulate data we use HTTP verbs POST/PUT (create, update), GET (read), DELETE (delete). For an example
take the scenario of manipulating Students data in a high school. Here is how each operation is mapped to a http request (URL + HTTP verb)
HTTP request | Operation |
POST api/students/ben | Create the resource (peice of data) called ben as a student. HTTP body or the url itself (e.g. api/students/ben?age=15&country=xx) may contain the required information about ben |
GET api/students/ben | Retrieve the information about ben. |
PUT api/students/ben | Update ben |
DELETE api/student/ben | Delete the student called ‘ben’. |
With the addition of all these HTTP verbs WSO2 WSF/PHP 2.0.0 become a great tool for RESTful developers. Specially with the introducing Data Services library it was so easy to make your database a REST service. I m thinking of preparing a series of application to demonstrate the power of WSF/PHP with all these new features.
This demo –RESTful School– shows how you map a URL to a peice of data. Here we use only the http “GET” method (which is the most to used in practicle data service).
Here is some description of the operations you find in there. Just check the source code for RESTful School demo to see how this is done in code level.
Operation | URL | SQL Query | Note |
Get All subjects |
subjects
|
SELECT subjectName, subjectTeacher FROM Subjects
|
With no parameters |
Get subject information From Name |
subjects/{name}
|
SELECT subjectName, subjectTeacher FROM Subjects where SubjectName = ?
|
The single parameter feed from prepared statement syntax |
Get All students |
students
|
SELECT * FROM Students
|
Again no parameters |
Get students From Name |
students/{name}
|
Inner Query:
SELECT subjectName, marks FROM Marks m, Subjects s ". " where m.studentId = ? and m.subjectID = s.subjectId Outer Query SELECT * FROM Students where StudentName = ?
|
Nested query, Inner query is called from outer query |
Get Marks per Students per Subjects |
students/{student}/marks/{subject} |
SELECT marks FROM Marks, Subjects, Students where StudentName = ?". " and SubjectName = ? and Marks.subjectId = Subjects.subjectId". " and Marks.studentID = Students.StudentId; |
Two parameters, and ‘?’ in the sql query.. |
Pingback: links for 2008-09-20 | NeXt
Pingback: RESTful CRUD Data Services Demo | Dimuthu's Blog
Pingback: RESTful School demo with PHP REST Framework « Samisa Abeysinghe - Service Oriented Architecture
Pingback: Top articles on WSF/PHP Data Services | Milinda Pathirage's Blog
Pingback: Writing a Simple REST and SOAP Service With PHP | Dimuthu's Blog
If you like to read more about REST with PHP, read this book RESTful PHP Web Services.
My review of this book can be found here, RESTful PHP Web Services – Book Review.