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.. |
posted on 2008-10-07 15:39
Blog of JoJo 阅读(249)
评论(0) 编辑 收藏 所属分类:
Linux 技术相关