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)
|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.
|Get All subjects||
SELECT subjectName, subjectTeacher FROM Subjects
|With no parameters|
|Get subject information From Name||
SELECT subjectName, subjectTeacher FROM Subjects where SubjectName = ?
|The single parameter feed from prepared statement syntax|
|Get All students||
SELECT * FROM Students
|Again no parameters|
|Get students From Name||
SELECT subjectName, marks FROM Marks m, Subjects s ". " where m.studentId = ? and m.subjectID = s.subjectId
SELECT * FROM Students where StudentName = ?
|Nested query, Inner query is called from outer query|
|Get Marks per Students per Subjects||
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..|