นี่คือ PHP REST-API โดยใช้การตรวจสอบความถูกต้อง HTTP พื้นฐาน เนื่องจากการรับรองความถูกต้อง HTTP พื้นฐานถูกเข้ารหัส แต่ไม่ได้เข้ารหัสจึงขอแนะนำให้ใช้การเชื่อมต่อที่ปลอดภัย (HTTPS) และรหัสผ่านที่แข็งแกร่ง
หากคุณใช้ API นี้สำหรับการจัดการข้อมูลที่ละเอียดอ่อนคุณจะทำมันด้วยความเสี่ยงของคุณเอง
ตั้งค่าเซิร์ฟเวอร์ MySQL และดำเนินการ example_database.sql ป้อนพารามิเตอร์ MySQL ที่เกี่ยวข้องใน settings.php
$ php -S localhost:2400 -t public
การรับรองความถูกต้องถูกเปิดใช้งานโดยค่าเริ่มต้น คุณสามารถปิดการใช้งานใน settings.php . php
ข้อมูลรับรองด้านล่างนี้เป็นรหัสที่ยากในมิดเดิลแวร์ lib/Authentication ขึ้นอยู่กับคุณที่จะใช้ตรรกะที่เหมาะสม
$ username = " rest " ;
$ password = " test " ; คุณสร้างบริการในไดเรกทอรี services และโฟลเดอร์เวอร์ชันเฉพาะ บริการที่สืบทอดมาจาก เว็บเซิร์ฟเวอร์ คลาสนามธรรมเสมอ นี่คือเทมเพลตพื้นฐานที่คุณสามารถใช้เพื่อเริ่มต้นได้อย่างรวดเร็ว:
use RESTapi Sources Request ;
use RESTapi Sources Response ;
use RESTapi Sources WebService ;
use RESTapi Library Database ;
class YourService extends WebService {
private Database | null $ db ;
public function __construct ()
{
$ this -> db = Database:: getInstance ();
}
public function get ( Request $ request , Response $ response ): void
{
// Your logic here ...
$ affectedRows = 12 ;
$ response -> write ( " JSON " ); // Add a JSON object
$ response -> addHeader ( " X-Data-Count " , $ affectedRows );
$ response -> setStatus ( 200 );
}
public function post ( Request $ request , Response $ response ): void
{
// Your logic here ...
$ affectedRows = 12 ;
$ response -> write ( " JSON " ); // Add a JSON object
$ response -> addHeader ( " X-Insert-Count " , $ affectedRows );
$ response -> setStatus ( 201 );
}
public function put ( Request $ request , Response $ response ): void
{
// Your logic here ...
$ affectedRows = 1 ;
$ response -> write ( " JSON " ); // Add a JSON object
$ response -> addHeader ( " X-Update-Count " , $ affectedRows );
$ response -> setStatus ( 204 );
}
public function delete ( Request $ request , Response $ response ): void
{
// Your logic here ...
$ affectedRows = 1 ;
$ response -> write ( " JSON " ); // Add a JSON object
$ response -> addHeader ( " X-Delete-Count " , $ affectedRows );
$ response -> setStatus ( 205 );
}
}การทำงานกับฐานข้อมูล:
โปรดชำระเงินให้บริการUsersเพื่อเรียนรู้และทำความเข้าใจวิธีการสร้างแบบสอบถามเพื่อดำเนินการ CRUD
การใช้งาน: GET domain.tld/[version]/[service]
$ ch = curl_init ( " http://localhost:2400/v1/Users/ " );
curl_setopt ( $ ch , CURLOPT_HTTPAUTH , CURLAUTH_BASIC );
curl_setopt ( $ ch , CURLOPT_USERPWD , " $ username : $ password " );
curl_setopt ( $ ch , CURLOPT_HEADER , true );
if (! $ output = curl_exec ( $ ch )) {
trigger_error ( curl_error ( $ ch ));
}
curl_close ( $ ch ); การใช้งาน: GET domain.tld/[version]/[service]/[id]
$ ch = curl_init ( " http://localhost:2400/v1/Users/3 " );
curl_setopt ( $ ch , CURLOPT_HTTPAUTH , CURLAUTH_BASIC );
curl_setopt ( $ ch , CURLOPT_USERPWD , " $ username : $ password " );
curl_setopt ( $ ch , CURLOPT_HEADER , true );
if (! $ output = curl_exec ( $ ch )) {
trigger_error ( curl_error ( $ ch ));
}
curl_close ( $ ch ); การใช้งาน: POST domain.tld/[version]/[service]
$ body = [
" name " => " Greta Garbo " ,
" age " => " 93 " ,
" city " => " Hollywood " ,
" country " => " California "
];
$ ch = curl_init ( " http://localhost:2400/v1/Users " );
curl_setopt ( $ ch , CURLOPT_POST , true );
curl_setopt ( $ ch , CURLOPT_POSTFIELDS , http_build_query ( $ body ));
curl_setopt ( $ ch , CURLOPT_HTTPAUTH , CURLAUTH_BASIC );
curl_setopt ( $ ch , CURLOPT_USERPWD , " $ username : $ password " );
curl_setopt ( $ ch , CURLOPT_HEADER , true );
if (! $ output = curl_exec ( $ ch )) {
trigger_error ( curl_error ( $ ch ));
}
curl_close ( $ ch ); การใช้งาน: PUT domain.tld/[version]/[service]/[id]
$ body = [
" name " => " John Rambo " ,
" age " => " 42 " ,
" city " => " Seattle " ,
" country " => " Washington "
];
$ ch = curl_init ( " http://localhost:2400/v1/Users/4 " );
curl_setopt ( $ ch , CURLOPT_CUSTOMREQUEST , " PUT " );
curl_setopt ( $ ch , CURLOPT_POSTFIELDS , http_build_query ( $ body ));
curl_setopt ( $ ch , CURLOPT_HTTPAUTH , CURLAUTH_BASIC );
curl_setopt ( $ ch , CURLOPT_USERPWD , " $ username : $ password " );
curl_setopt ( $ ch , CURLOPT_HEADER , true );
if (! $ output = curl_exec ( $ ch )) {
trigger_error ( curl_error ( $ ch ));
}
curl_close ( $ ch ); การใช้งาน: DELETE domain.tld/[version]/[service]/[id]
$ ch = curl_init ( " http://localhost:2400/v1/Users/1 " );
curl_setopt ( $ ch , CURLOPT_CUSTOMREQUEST , " DELETE " );
curl_setopt ( $ ch , CURLOPT_HTTPAUTH , CURLAUTH_BASIC );
curl_setopt ( $ ch , CURLOPT_USERPWD , " $ username : $ password " );
curl_setopt ( $ ch , CURLOPT_HEADER , true );
if (! $ output = curl_exec ( $ ch )) {
trigger_error ( curl_error ( $ ch ));
}
curl_close ( $ ch ); บริการสืบทอดฟังก์ชั่นสี่ฟังก์ชั่น get post put และ delete จากคลาสเว็บเซิร์ฟเวอร์นามธรรมโดยค่าเริ่มต้น สิ่งเหล่านี้สมบูรณ์แบบในการดำเนินการ CRUD ในฐานข้อมูล แต่ถ้าคุณต้องการบริการที่ควรทำงานพิเศษ ในกรณีเช่นนี้คุณสามารถใช้ PATCH วิธีการขอ HTTP และระบุชื่อของการกระทำใน URI
ด้านล่างเป็นตัวอย่างของบริการลดระดับที่ทวีคูณสองตัวเลข:
การใช้งาน: PATCH domain.tld/[version]/[service]/[action]
$ ch = curl_init ( " http://localhost:2400/v1/Calculator/multiply " );
$ body = [
" a " => 12 ,
" b " => 2.5
];
$ ch = curl_init ( $ url );
curl_setopt ( $ ch , CURLOPT_CUSTOMREQUEST , " PATCH " );
curl_setopt ( $ ch , CURLOPT_POSTFIELDS , http_build_query ( $ body ));
curl_setopt ( $ ch , CURLOPT_HTTPAUTH , CURLAUTH_BASIC );
curl_setopt ( $ ch , CURLOPT_USERPWD , " $ username : $ password " );
curl_setopt ( $ ch , CURLOPT_HEADER , true );
if (! $ output = curl_exec ( $ ch )) {
trigger_error ( curl_error ( $ ch ));
}
curl_close ( $ ch );API ตอบกลับด้วยรหัสสถานะต่อไปนี้ คุณสามารถเปลี่ยนสิ่งนี้ได้ตามความชอบของคุณ:
ในความสำเร็จ:
มิฉะนั้น:
ด้านล่างเป็นรูปแบบตัวอย่างที่คุณสามารถใช้เพื่อสร้างมิดเดิลแวร์ของคุณเอง คุณสามารถสร้างมิดเดิลแวร์ของคุณเองโดยการสร้างคลาสในโฟลเดอร์ lib ที่ใช้อินเทอร์เฟซ imiddleware :
class YourMiddleware implements IMiddleware {
public function handle ( Request $ request , Response $ response ): void {}
}ในการฉีดมิดเดิลแวร์ลงในมิดเดิลแวร์อื่นใช้ตัวสร้างของมิดเดิลแวร์นั้น:
class YourMiddleware implements IMiddleware {
public function __construct ( private IMiddleware $ anotherMiddleware ) {}
public function handle ( Request $ request , Response $ response ): void
{
// 1. Add your logic ...
// 2. Handle Middleware ...
$ this -> anotherMiddleware -> handle ( $ request , $ response );
// 3. Do something afterwards ...
}
}
$ anotherMiddleware = new AnotherMiddleware ();
$ yourMiddleware = new YourMiddleware ( $ anotherMiddleware );
$ yourMiddleware -> handle ( $ request , $ response );มาร์ตินหมาป่า
มิกซ์