PHP مريحة
REST (بالإنكليزية: نقل دولة التمثيلي، ودعا بقية)، ويشير إلى مجموعة من القيود والمبادئ المعمارية.
ويطلق على غرار بقية تصميم واجهة برمجة التطبيقات API الويب ومريحة. ويعرف ذلك من الموارد الثلاثة التالية:
- بديهية وجيزة عنوان الموارد: أوري، على سبيل المثال:
http://example.com/resources/
. - الموارد ناقل الحركة: خدمة ويب تقبل بعودة أنواع وسائل الإعلام الإنترنت، مثل: JSON، XML، يام تريد.
- تشغيل الموارد: أسلوب خدمة ويب في سلسلة من الطلبات على الموارد المدعومة (على سبيل المثال: POST، GET، PUT أو DELETE).
هذا البرنامج التعليمي سوف نستخدم PHP (لم يحدد اطارا) لإنشاء خدمة على شبكة الإنترنت مريحة، يمكنك تحميل في نهاية المقال إلى استخدام التعليمات البرمجية في هذا القسم.
في هذا البرنامج التعليمي، وسوف تتعلم ما يلي:
- إنشاء خدمة ويب مريحة.
- باستخدام PHP الأصلي، لا تعتمد على أي إطار.
- إستراحة نمط URI اتباع القواعد.
- تقبل خدمة مريحة والشكل قد يتم إرجاع JSON، XML وهلم جرا.
- رموز حالة HTTP استجابة تبعا للحالة المقابلة.
- طلبات تجريبي الرأس.
- استخدام العميل REST لاختبار خدمة ويب مريحة.
أمثلة من خدمة ويب مريحة
التعليمة البرمجية التالية هي الطبقة خدمة مريحة Site.php:
أمثلة
/ *
* هذا البرنامج التعليمي يوضح أمثلة على راحة
* الطبقة خدمة مريحة
* /
الموقع الطبقة {
مواقع $ = خاصة مجموعة (
1 => 'تاوباو،
2 => 'جوجل'،
3 => 'w3big،
4 => 'بايدو،
5 => 'ويبو "،
6 => 'سينا'
)؛
getAllSite ظيفة عمومية () {
العودة $ هذا -> المواقع؛
}
وظيفة عامة getSite ($ معرف) {
$ الموقع = مجموعة ($ معرف = > ($ هذا -> مواقع الكترونية [$ معرف]) $ هذا -> مواقع الكترونية [$ معرف] :؟ $ هذا -> مواقع الكترونية [1])؛
العودة $ الموقع؛
}
}
؟>
رسم الخرائط راحة الخدمات URI
يجب تعيين خدمات مريحة URI إلى عنوان الموارد البصرية وجيزة. يجب تعيين الخادم هتكس أباتشي فوق قواعد إعادة كتابة المقابلة.
هذا المثال سوف نستخدم قاعدتين URI:
1، للحصول على قائمة بجميع المواقع:
http://localhost/restexample/site/list/
2، وذلك باستخدام معرف للموقع المحدد، أوري التالي للحصول على معرف 3 مواقع:
http://localhost/restexample/site/list/3/
هتكس قواعد التكوين ملف المشروع هي كما يلي:
# 开启 rewrite 功能 Options +FollowSymlinks RewriteEngine on # 重写规则 RewriteRule ^site/list/$ RestController.php?view=all [nc,qsa] RewriteRule ^site/list/([0-9]+)/$ RestController.php?view=single&id=$1 [nc,qsa]
تحكم مريحة خدمة الويب
في ملفهتكس، فسوف نحصل على ملف RestController.php على طلب المقابلة عن طريق وضع "عرض" معلمة، عن طريق الحصول على المعلمات "عرض" مختلفة لتوزيعها على وسائل مختلفة.كود ملف RestController.php على النحو التالي:
أمثلة
require_once ( "SiteRestHandler.php")؛
$ عرض = ""؛
إذا (_GET isset ($ & # 91؛ "وجهة نظر" & # 93؛))
$ عرض = $ _GET & # 91 ؛ "وجهة نظر" & # 93 ؛؛
/ *
* وحدة تحكم خدمة مريحة
* تعيين URL
* /
التبديل ($ عرض) {
حالة "جميع":
// التعامل مع بقية عنوان / الموقع / القائمة /
$ siteRestHandler = الجديدة SiteRestHandler ()؛
$ siteRestHandler -> getAllSites ()؛
كسر.
حالة "واحد":
// التعامل مع بقية عنوان / الموقع / المعرض / < معرف> /
$ siteRestHandler = الجديدة SiteRestHandler ()؛
$ siteRestHandler -> getSite ($ _GET [ "المعرف"])؛
كسر.
حالة "":
// 404 - لم يتم العثور.
كسر.
}
؟>
دروس بسيطة مؤسسة مريحة
وفيما يلي يوفر قاعدة الطبقة مريحة للتجهيز في استجابة لطلب رمز حالة HTTP، رمز ملف SimpleRest.php على النحو التالي:
أمثلة
/ *
* بسيطة خدمات الشبكة راحة الفئة الأساسية
* ونحن يمكن أن تمتد هذه الفئة بناء على الطلب
* /
الطبقة SimpleRest {
$ الخاص httpVersion = "HTTP / 1.1 ".
setHttpHeaders ظيفة عمومية ($ contentType، $ statusCode) {
$ statusMessage = $ هذا -> getHttpStatusMessage ($ statusCode)؛
رأس ($ هذا -> httpVersion " " $ statusCode .. "" $ statusMessage ..)؛
رأس ( "نوع المحتوى:" $ contentType)؛
}
وظيفة عامة getHttpStatusMessage ($ statusCode) {
$ httpStatus = مجموعة (
100 => 'متابعة'،
101 => 'بروتوكولات تبديل،
200 => 'موافق'،
201 => 'مكون'،
202 => 'مقبول'،
203 => 'غير موثوقة معلومات ،
204 => 'لا المحتوى،
205 => 'إعادة تعيين المحتوى،
206 => 'المحتوى الجزئي،
300 => 'خيارات متعددة'،
301 => 'منقول بشكل دائم،
302 => 'وجدت،
303 => 'انظر أخرى،
304 => 'لم يتم تعديل،
305 => 'استخدام وكيل "،
306 => '(غير المستخدمة) " ،
307 => 'إعادة توجيه المؤقتة،
400 => 'طلب غير صحيح'،
401 => 'غير مصرح بها،
402 => 'الدفع المطلوبة،
403 => 'المحرمة'،
404 => 'لم يتم العثور على "،
405 => 'أسلوب غير مسموح' ،
406 => 'غير مقبول'،
407 => 'مطلوب مصادقة الوكيل " ،
408 => 'مهلة طلب،
409 => 'الصراع'،
410 => 'ذهب'،
411 => 'طول المطلوبة،
"فشل الشرط المسبق" 412 =>،
413 => 'طلب الوحدة كبير جدا ،
414 => 'طلب إلى أوري جدا طويل،
415 => 'نوع الوسائط غير مدعوم " ،
416 => 'النطاق المطلوب غير كاف "،
417 => 'فشل التوقع،
500 => 'خطأ خادم داخلي " ،
501 => 'لم تنفذ،
502 => 'بوابة باد "،
503 => 'الخدمة غير متوفرة "،
504 => 'مهلة البوابة'،
505 => 'HTTP الإصدار غير معتمد ')؛
عودة ($ httpStatus [$ statusCode] ) $ httpStatus [$ statusCode]: $ وضع [500] ؛؟
}
}
؟>
راحة الويب الدرجة معالجة الخدمة
وفيما يلي مريحة خدمة ويب الطبقة معالج SiteRestHandler.php، ورثت ما سبق يمكننا توفير قاعدة الطبقة مريحة، يتم تحديد الفئة من قبل المعلمات لطلب لتحديد ما إذا كانت رموز حالة HTTP عاد ونماذج البيانات، ونحن نقدم أمثلة على ثلاثة نماذج البيانات: "التطبيق / سلمان"، "التطبيق / أكس" أو "نص / أتش تي أم أل":
كود ملف SiteRestHandler.php على النحو التالي:
أمثلة
require_once ( "SimpleRest.php")؛
require_once ( "Site.php")؛
الطبقة SiteRestHandler يمتد SimpleRest {
getAllSites وظيفة () {
$ الموقع = الموقع الجديد ()؛
$ rawData = $ الموقع -> getAllSite ()؛
إذا (فارغ ($ rawData)) {
$ statusCode = 404؛
$ rawData = مجموعة ( 'خطأ' => 'لا مواقع موجود!')؛
} {شيء آخر
$ statusCode = 200؛
}
$ requestContentType = $ _SERVER [ 'HTTP_ACCEPT '].
دولار هذا -> setHttpHeaders ($ requestContentType ، $ statusCode)؛
إذا (strpos ($ requestContentType، " التطبيق / سلمان ')! == كاذبة) {
استجابة $ = $ هذا -> encodeJson ($ rawData)؛
صدى $ الاستجابة؛
} آخر إذا (strpos ($ requestContentType ، 'نص / أتش تي أم أل')! == الكاذبة) {
استجابة $ = $ هذا -> encodeHtml ($ rawData)؛
صدى $ الاستجابة؛
} آخر إذا (strpos ($ requestContentType ، "التطبيق / أكس ')! == الكاذبة) {
استجابة $ = $ هذا -> encodeXml ($ rawData)؛
صدى $ الاستجابة؛
}
}
وظيفة عامة encodeHtml ($ responseData) {
$ htmlResponse = "<حدود الجدول = " 1 ">".
foreach ($ responseData من $ الرئيسية = > قيمة $) {
.. $ htmlResponse = "<tr > <td>" $ المفتاح "</ td> <td>" قيمة $ "</ td> </ tr>" ...؛
}
. $ htmlResponse = "</ الجدول >".
العودة $ htmlResponse.
}
وظيفة عامة encodeJson ($ responseData) {
$ jsonResponse = json_encode ($ responseData) .
عودة $ jsonResponse.
}
encodeXml ظيفة عمومية ($ responseData) {
// إنشاء SimpleXMLElement كائن
$ أكس = الجديدة SimpleXMLElement ( '< موقع> </ الموقع> <أكس الإصدار = "1.0"؟>')؛
foreach ($ responseData من $ الرئيسية = > قيمة $) {
$ أكس -> addChild (مفتاح $ ، قيمة $)؛
}
عودة $ أكس -> asXML () .
}
وظيفة عامة getSite ($ معرف) {
$ الموقع = الموقع الجديد ()؛
$ rawData = $ الموقع -> getSite ($ معرف)؛
إذا (فارغ ($ rawData)) {
$ statusCode = 404؛
$ rawData = مجموعة ( 'خطأ' => 'لا مواقع موجود!')؛
} {شيء آخر
$ statusCode = 200؛
}
$ requestContentType = $ _SERVER [ 'HTTP_ACCEPT '].
دولار هذا -> setHttpHeaders ($ requestContentType ، $ statusCode)؛
إذا (strpos ($ requestContentType، " التطبيق / سلمان ')! == كاذبة) {
استجابة $ = $ هذا -> encodeJson ($ rawData)؛
صدى $ الاستجابة؛
} آخر إذا (strpos ($ requestContentType ، 'نص / أتش تي أم أل')! == الكاذبة) {
استجابة $ = $ هذا -> encodeHtml ($ rawData)؛
صدى $ الاستجابة؛
} آخر إذا (strpos ($ requestContentType ، "التطبيق / أكس ')! == الكاذبة) {
استجابة $ = $ هذا -> encodeXml ($ rawData)؛
صدى $ الاستجابة؛
}
}
}
؟>
نحن المقبل خلال http: // المضيف المحلي / restexample / الموقع / قائمة / زيارة، نتائج الإخراج هي كما يلي:
العميل مريحة خدمة الويب
ثم يمكننا استخدام عملاء خدمة ويب كما مريحة "تقدم الراحة العميل" متصفح Google Chrome لطلب خدماتنا.
أمثلة على طلب HTTP: // المضيف المحلي / restexample / الموقع / قائمة / عنوان، البيانات الواردة مشابهلقبول: التطبيق / سلمان
3 طلب معرف الموقع w3big (تعليمي)، عنوان الوصول هو http: // المضيف المحلي / restexample / الموقع / القائمة / 3 /،
مصدر تحميل
رمز المستخدمة في المثال إلى انقر فوق الزر أدناه لتحميل: