تمت ترقيته من الإصدار 3 RC6 للحصول على أحدث دعم PHP
Restler هو خادم Web API بسيط وفعال ومتعدد التنسيقات ومكتوب بلغة PHP.
ما عليك سوى التعامل مع منطق عملك باستخدام لغة php، وسيتولى ريستلر الباقي!
@url GET my/custom/url/{param}
PHPDoc الإصدار الأكثر استقرارًا والأحدث موجود في الفرع master
، والإصدارات السابقة موجودة في فروع الإصدار مثل v4
و v3
و v2
و v1
.
يتم استخدام فرع الإصدار مع الإصدار الحالي مثل v5
لإنشاء الإصدار التالي. قد لا يتم تحديث وثائقها بشكل متكرر، وبالتالي فهي مخصصة للجرأة.
فروع الميزات مثل features/html
features/router
مخصصة فقط لغرض التجربة لتجربة إحدى الميزات. ويمكن دمجها عندما تصبح جاهزة.
قم بتثبيت هذا المستودع لتجربة الأمثلة.
تأكد من توفر PHP 5.4 أو أعلى على الخادم الخاص بك. نوصي باستخدام أحدث إصدار للحصول على أداء أفضل.
يستخدم Restler Composer لإدارة تبعياته. أولاً، قم بتنزيل نسخة من composer.phar
. يمكن الاحتفاظ به في مجلد المشروع الخاص بك أو في usr/local/bin
لاستخدامه عالميًا لجميع مشاريعك. إذا كنت تستخدم نظام التشغيل Windows، فيمكنك استخدام برنامج تثبيت Windows Composer بدلاً من ذلك.
يمكنك تثبيت Restler عن طريق تشغيل أمر إنشاء مشروع في جهازك الطرفي. استبدل {projectName} باسم مشروعك الفعلي. سيقوم بإنشاء مجلد بهذا الاسم وتثبيت Restler.
php composer.phar create-project luracast/restler {projectName}
ملحوظة:-
إذا كنت لا تريد التنسيقات الإضافية وأدوات BDD، فيمكنك تضمين >
--no-dev
لفرض استبعاد حزم التطوير.إذا كنت تريد تجربة فرع bleading edge v3 أو أي من الميزات > تتضمن الفروع
3.x-dev
أوdev-features/html
في الأمر أعلاه
بعد تثبيت Composer، قم بتنزيل أحدث إصدار من إطار عمل Restler واستخرج محتوياته إلى دليل على الخادم الخاص بك. بعد ذلك، في جذر مشروع Restler الخاص بك، قم بتشغيل الأمر php composer.phar install
(أو composer install
) لتثبيت جميع تبعيات إطار العمل. تتطلب هذه العملية تثبيت Git على الخادم لإكمال التثبيت بنجاح.
إذا كنت تريد تحديث إطار عمل Restler، فيمكنك إصدار أمر php composer.phar update
.
ملاحظة: - إذا لم يكن مسموحًا لك بتثبيت Composer وGit على الخادم الخاص بك، فيمكنك تثبيتهما وتشغيلهما على جهاز التطوير الخاص بك. يمكن تحميل الملفات والمجلدات الناتجة واستخدامها على الخادم.
من الناحية المثالية، يجب تعيين المجلد العام كجذر الويب الخاص بك، وهو أمر اختياري، ولكن يوصى بتجنب الكشف عن الملفات والمجلدات غير الضرورية.
جرب الأمثلة الحية في مضيفك المحلي.
يمكنك تشغيل خادم PHP المدمج باستخدام أمر
composer serve
.
قم بتحديث base_url المحدد في behat.yml
ثم حاول الأمر التالي
vendor/bin/behat
بدلا من ذلك يمكنك تشغيل
composer test
وهذا سيختبر الأمثلة مقابل السلوكيات المتوقعة، على سبيل المثال
Feature : Testing CRUD Example
Scenario : Creating new Author with JSON
Given that I want to make a new "Author"
And his "name" is "Chris"
And his "email" is "[email protected]"
And the request is sent as JSON
When I request "/examples/_007_crud/authors"
Then the response status code should be 200
And the response should be JSON
And the response has a "id" property
كل شيء جاهز، استراحة سعيدة! :)
لدينا خياران لإنشاء خادم Restler API الخاص بك
الخيار الأكثر ملاءمة هو استخدام قوالب التطبيقات مثل تطبيق Restler الذي يحتوي على تكاملات مع العديد من الحزم لمساعدتنا في منطق الأعمال أيضًا. إذا اخترت هذا الخيار، فحدد فرعًا في هذا المستودع وتابع التعليمات المتوفرة هناك.
قم بإنشاء مشروع من البداية بحيث يكون لديك السيطرة الكاملة على كل جانب من جوانب تطبيقك. إذا اخترت هذا الخيار، فاتبع الخطوات الموضحة أدناه.
composer init
وتابع لإنشاء composer.json
restler/framework
و ^5
لقيود الإصدار.composer require restler/framework:^5
نحن نستخدم
restler/framework
بدلاً منluracast/restler
لتقليل المساحة المطلوبة للحزمة. إنه قادم من https://github.com/Luracast/Restler-Framework ويحتوي فقط على محتويات مجلد src هنا.
حتى عندما تقوم بالإنشاء من البداية، فإن التحقق من قوالب التطبيق سيساعد في اتخاذ قرارات بشأن بنية المجلد والعثور على حزم مفيدة أخرى.
قم بإنشاء فئات API الخاصة بك بكل الطرق العامة والمحمية اللازمة
قم بإنشاء البوابة (public/index.php) كما يلي
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use Luracast Restler Restler ;
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> handle (); //serve the response
تمكين إعادة كتابة عنوان URL
تأكد من أن جميع الطلبات تذهب إلى ملف Index.php عن طريق تمكين إعادة كتابة عنوان URL لموقعك على الويب
على سبيل المثال:-
إذا كنت تستخدم Apache، فيمكنك استخدام ملف htaccess مثل
DirectoryIndex index.php
< IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</ IfModule >
< IfModule mod_php5.c>
php_flag display_errors On
</ IfModule >
ملاحظة: - يتطلب هذا تعيين
AllowOverride
علىAll
بدلاً منNone
في ملفhttpd.conf
، وقد يتطلب بعض التغيير والتبديل في بعض تكوينات الخادم. راجع وثائق mod_rewrite لمزيد من المعلومات.
إذا كنت تستخدم Nginx، فيجب عليك التأكد من تعيين اسم server_name
وتمرير نصوص PHP للاستماع السريع لـ cgi (PHP-FPM) على 127.0.0.1:9000
server {
listen 80;
server_name api.luracast.com; //change it to match your server name
//... other stuff
location ~ .php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
//... other stuff
}
ملاحظة: - يتطلب هذا تثبيت PHP وPHP-FPM وتكوينهما بشكل صحيح. ارجع إلى مثال PHP FastCGI لمزيد من المعلومات.
ضبط دقيق لتناسب احتياجاتك
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use Luracast Restler Restler ;
use Luracast Restler Defaults ;
//set the defaults to match your requirements
Defaults:: $ throttle = 20 ; //time in milliseconds for bandwidth throttling
//setup restler
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> addAPIClass ( ' Explorer ' ); //from restler framework for API Explorer
$ r -> addFilterClass ( ' RateLimit ' ); //Add Filters as needed
$ r -> handle (); //serve the response
استكشف واجهة برمجة التطبيقات وجربها عن طريق فتح explorer/index.html
من جذر الويب على متصفحك
استكشاف سعيد! :)
ملاحظة: - قد يؤدي استخدام eAccelerator إلى فشل برنامج Restler لأنه يزيل التعليقات. يمكن العثور على مزيد من المعلومات هنا
يدعم Restler التعليقات التوضيحية في شكل تعليقات PHPDoc لضبط واجهة برمجة التطبيقات (API) بشكل دقيق
تم توثيقها بالتفصيل تحت التعليقات التوضيحية
من أجل حماية واجهة برمجة التطبيقات الخاصة بك، قم بالمصادقة والسماح للمستخدمين الصالحين
<?php
require_once ' ../restler.php ' ;
use Luracast Restler Restler ;
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> addAuthenticationClass ( ' CustomAuth ' ); //Add Authentication classes as needed
$ r -> handle (); //serve the response
افتراضيًا، يعمل Restler في وضع تصحيح الأخطاء بشكل أكثر دقة لمطور واجهة برمجة التطبيقات (API)، من خلال عرض رسائل خطأ مفصلة وتجميل نتيجة واجهة برمجة التطبيقات (API) لنموذج قابل للقراءة البشرية
من خلال تشغيل وضع الإنتاج، ستحصل على بعض التعزيز في الأداء لأنه سيخزن المسارات مؤقتًا (يحدث تحليل التعليق مرة واحدة فقط بدلاً من كل استدعاء لواجهة برمجة التطبيقات)، وعدد قليل من الملفات الأخرى وتجنب إعطاء معلومات تصحيح الأخطاء
<?php
require_once ' ../restler.php ' ;
use Luracast Restler Restler ;
//setup restler
$ r = new Restler ( true ); //turn on production mode by passing true.
//If you are using file based cache (the default) make sure cache folder is
//writable. when you make changes to your code make sure you delete the
// routes.php inside the cache folder
//...
ملاحظة: - عند ضبط وضع الإنتاج على
true
، فإنه يستخدم دائمًا ذاكرة التخزين المؤقت ولا يكتشف التغييرات والمسارات الجديدة إن وجدت. يجب أن يقوم خط أنابيب التكامل المستمر أو خطاف git الخاص بك بحذف هذا الملف أثناء عملية النشر. وبدلاً من ذلك، يمكنك تمرير المعلمة الثانية إلى مُنشئ Restler لتحديث ذاكرة التخزين المؤقت عند الحاجة إلى تطبيق التغييرات.
composer serve
.composer test
بعد تشغيل الخادم مع composer serve
في نافذة أخرى.$restler->addAPIClass("Luracast/Restler/Explorer", 'swagger')
يعينه إلى /swagger
.تم تحسين فئة المسارات لتوفير طريقة findAll لسرد جميع المسارات لإصدار معين من واجهة برمجة التطبيقات (API) باستثناء المسارات المحددة وطرق http.
الخصائص السحرية التي تستخدمها الطرق عند العثور عليها، متجاهلة الخصائص الفعلية. يعد هذا مفيدًا لفئات النماذج الديناميكية مثل Eloquent.
تسمح المسارات الآن بأن يكون @required
و @properties
عبارة عن صفائف عندما تكون المعلمة كائنًا. يساعدنا هذا في انتقاء واختيار الخصائص لكل طريقة من طرق واجهة برمجة التطبيقات بشكل مختلف. مثال {@properties property1,property2,property3}
{@required property1,property2}
يجعل واجهة برمجة التطبيقات للبحث عن 3 خصائص فقط ويلزم 2 منها.
تحسين فئة التنقل. وهو الآن يستخدم Routes::findAll()
بالإضافة إلى فئة Explorer
تحتوي فئة Restler على طريقة setBaseUrls لتعيين عناوين URL الأساسية المقبولة التي يمكن تعيينها باستخدام $_SERVER['HTTP_HOST']
. اقرأ هذا المقال لتفهم السبب. وهذا مفيد في الحالات التالية عندما
تسمح فئة Restler الآن بتجاوز رمز الحالة عن طريق تعيين $this->restler->responseCode
من طريقة API.
فئة النماذج المحسنة لإرسال الخصائص المضمنة إلى قالب emmet. على سبيل المثال
/**
* {@id form1}
*
* @param string $name
* @param int $age
*/
يولد النموذج التالي
<form role="form" id="form1" method="POST" ...
لأن قالب emmet يحتوي على معرف (انظر أدناه)
form[role=form id=$id# name=$name# method=$method# action=$action# enctype=$enctype#]
@param
لتعيين سمات html (على سبيل المثال المعرف والقبول وما إلى ذلك) بسهولة@class
. مثال: - @class Validator {@holdException}
يجعل المدقق يحتفظ بالاستثناءات بدلاً من رميها@property
و @property-read
و @property-write
لدعم توثيق الخصائص الديناميكية.string[]
و DateTime[]
Scope::$resolver
.String
إلى Text
لدعم PHP 7 (السلسلة هي كلمة رئيسية محجوزة في php7)