อัปเกรดจากเวอร์ชัน 3 RC6 เพื่อรองรับ PHP ล่าสุด
Restler เป็น Web API Server หลายรูปแบบที่เรียบง่ายและมีประสิทธิภาพซึ่งเขียนด้วย PHP
เพียงจัดการกับตรรกะทางธุรกิจของคุณใน PHP แล้ว Restler จะดูแลส่วนที่เหลือ!
@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 ของผู้แต่งแทนได้
คุณสามารถติดตั้ง Restler ได้โดยการรันคำสั่ง create project ในเทอร์มินัลของคุณ แทนที่ {projectName} ด้วยชื่อโปรเจ็กต์จริงของคุณ มันจะสร้างโฟลเดอร์ที่มีชื่อนั้นและติดตั้ง Restler
php composer.phar create-project luracast/restler {projectName}บันทึก:-
หากคุณไม่ต้องการรูปแบบเพิ่มเติมและเครื่องมือ BDD คุณสามารถรวม >
--no-devเพื่อบังคับใช้การแยกแพ็คเกจ 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 บนเซิร์ฟเวอร์ของคุณ คุณสามารถติดตั้งและรันบนเครื่องพัฒนาของคุณได้ ไฟล์และโฟลเดอร์ผลลัพธ์สามารถอัปโหลดและใช้งานบนเซิร์ฟเวอร์ได้
ตามหลักการแล้ว โฟลเดอร์สาธารณะควรถูกแมปเป็นรูทเว็บของคุณ ซึ่งเป็นทางเลือก แต่แนะนำให้หลีกเลี่ยงการเปิดเผยไฟล์และโฟลเดอร์ที่ไม่จำเป็น
ลองใช้ตัวอย่างสดใน localhost ของคุณ
คุณสามารถเปิดเซิร์ฟเวอร์ในตัวของ 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
เรียบร้อยแล้ว ขอให้มีความสุขในการพักผ่อน! -
เรามีสองตัวเลือกในการสร้างเซิร์ฟเวอร์ API ของ Restler ของคุณเอง
ตัวเลือกที่สะดวกที่สุดคือการใช้เทมเพลตแอปพลิเคชันเช่น Restler Application ซึ่งมีการผสานรวมกับแพ็คเกจมากมายเพื่อช่วยเราในเรื่องตรรกะทางธุรกิจเช่นกัน หากคุณเลือกตัวเลือกนี้ ให้เลือกสาขาในพื้นที่เก็บข้อมูลนั้นและดำเนินการตามคำแนะนำที่มีอยู่
สร้างโปรเจ็กต์ตั้งแต่เริ่มต้นเพื่อให้คุณสามารถควบคุมทุกแง่มุมของแอปพลิเคชันของคุณได้อย่างเต็มที่ หากคุณเลือกตัวเลือกนี้ ให้ทำตามขั้นตอนด้านล่าง
composer init และปฏิบัติตามเพื่อสร้าง composer.jsonrestler/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 สำรวจ API และทดลองใช้โดยเปิด explorer/index.html จากเว็บรูทบนเบราว์เซอร์ของคุณ
มีความสุขในการสำรวจ! -
หมายเหตุ:- การใช้ eAccelerator สามารถทำให้ Restler ล้มเหลวในขณะที่ลบความคิดเห็นออก สามารถดูข้อมูลเพิ่มเติมได้ที่นี่
Restler รองรับคำอธิบายประกอบในรูปแบบของความคิดเห็น PHPDoc สำหรับการปรับแต่ง API อย่างละเอียด
มีการบันทึกไว้โดยละเอียดภายใต้คำอธิบายประกอบ
เพื่อปกป้อง 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 ให้เป็นรูปแบบที่อ่านได้ของมนุษย์
เมื่อเปิดโหมดการใช้งานจริง คุณจะได้รับการปรับปรุงประสิทธิภาพเนื่องจากจะแคชเส้นทาง (การแยกวิเคราะห์ความคิดเห็นจะเกิดขึ้นเพียงครั้งเดียวแทนที่จะเป็นการเรียก 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 Hook ของคุณควรลบไฟล์นี้ในระหว่างกระบวนการปรับใช้ หรือคุณสามารถส่งพารามิเตอร์ตัวที่สองไปยังคอนสตรัคเตอร์ของ Restler เพื่อรีเฟรชแคชเมื่อจำเป็นต้องใช้การเปลี่ยนแปลง
composer servecomposer test หลังจากรันเซิร์ฟเวอร์โดยที่ composer serve ในหน้าต่างอื่น$restler->addAPIClass("Luracast/Restler/Explorer", 'swagger') แมปกับ /swaggerคลาสเส้นทางได้รับการปรับปรุงเพื่อให้มีเมธอด findAll เพื่อแสดงรายการเส้นทางทั้งหมดสำหรับเวอร์ชันเฉพาะของ API ยกเว้นเส้นทางที่ระบุและวิธีการ http
เมื่อพบคุณสมบัติทางเวทย์มนตร์ที่ใช้โดยเส้นทางโดยไม่สนใจคุณสมบัติที่แท้จริง สิ่งนี้มีประโยชน์สำหรับคลาส Dynamic Model เช่น Eloquent
ขณะนี้เส้นทางอนุญาตให้ @required และ @properties เป็นอาร์เรย์เมื่อพารามิเตอร์เป็นวัตถุ สิ่งนี้ช่วยให้เราเลือกและเลือกคุณสมบัติสำหรับวิธี API แต่ละวิธีที่แตกต่างกันได้ ตัวอย่าง {@properties property1,property2,property3} {@required property1,property2} ทำให้ API ค้นหาพร็อพเพอร์ตี้ 3 รายการเท่านั้น และจำเป็นต้องมี 2 รายการ
ปรับคลาส Nav ให้เหมาะสม ตอนนี้ใช้ 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 (เช่น id, ยอมรับ ฯลฯ) ได้อย่างง่ายดาย@class comment ตัวอย่าง: - @class Validator {@holdException} ทำให้ตัวตรวจสอบเก็บข้อยกเว้นแทนที่จะทิ้ง@property , @property-read , @property-write เพื่อรองรับการบันทึกคุณสมบัติไดนามิกstring[] , DateTime[]Scope::$resolverString เป็น Text เพื่อรองรับ PHP 7 (String เป็นคีย์เวิร์ดที่สงวนไว้ใน php7)