Latest web development tutorials
×

PHP หลักสูตร

PHP หลักสูตร PHP แนะนำโดยย่อ PHP ติดตั้ง PHP ไวยากรณ์ PHP ตัวแปร PHP echo/print PHP ชนิดข้อมูล PHP คงที่ PHP เชือก PHP ผู้ประกอบการ PHP If...Else PHP Switch PHP แถว PHP เรียงลำดับอาร์เรย์ PHP Superglobals PHP While การไหลเวียน PHP For การไหลเวียน PHP ฟังก์ชัน PHP ตัวแปรเมจิก PHP namespaces PHP เชิงวัตถุ

PHP ฟอร์ม

PHP ฟอร์ม PHP รูปแบบการตรวจสอบสิทธิ์ PHP ฟอร์ม - ฟิลด์ที่จำเป็น PHP ฟอร์ม - อีเมลยืนยันและ URL PHP ตัวอย่างสมบูรณ์แบบ PHP $_GET ตัวแปร PHP $_POST ตัวแปร

PHP การสอนที่ทันสมัย

PHP อาร์เรย์หลายมิติ PHP วันที่ PHP บรรจุ PHP ไฟล์ PHP อัปโหลดไฟล์ PHP Cookie PHP Session PHP E-mail PHP ความปลอดภัย E-mail PHP Error PHP Exception PHP กรอง PHP กรองขั้นสูง PHP JSON

PHP 7 คุณสมบัติใหม่

PHP 7 คุณสมบัติใหม่

PHP ฐานข้อมูล

PHP MySQL แนะนำโดยย่อ PHP MySQL สัมพันธ์ PHP MySQL การสร้างฐานข้อมูล PHP MySQL สร้างตารางข้อมูล PHP MySQL แทรกข้อมูล PHP MySQL ใส่ข้อมูลหลาย PHP MySQL งบเตรียม PHP MySQL อ่านข้อมูล PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX แนะนำโดยย่อ AJAX PHP AJAX ฐานข้อมูล AJAX XML AJAX ค้นหาแบบ Real-time AJAX RSS Reader AJAX โหวต

PHP คู่มืออ้างอิง

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP การประมวลผลภาพ PHP RESTful

PHP สงบ

REST (อังกฤษ: การถ่ายโอนรัฐ Representational เรียก REST) ​​หมายถึงชุดของข้อ จำกัด ทางด้านสถาปัตยกรรมและหลักการ

ส่วนที่เหลือสไตล์การออกแบบเว็บ API ที่เรียกว่าสงบ API มันถูกกำหนดจากสามแหล่งข้อมูลต่อไปนี้:

  • ทรัพยากรที่อยู่ที่ใช้งานง่ายโดยย่อ: URI ตัวอย่างเช่น: http://example.com/resources/
  • ทรัพยากรเกียร์: บริการเว็บยอมรับการกลับมาของประเภทสื่ออินเทอร์เน็ตเช่น JSON, XML, YAM เช่น
  • การดำเนินงานของทรัพยากร: วิธีการบริการเว็บในซีรีส์ของการร้องขอทรัพยากรสนับสนุน (เช่น: โพสต์ได้รับการใส่หรือลบ)

กวดวิชานี้เราจะใช้ PHP (ไม่มีกรอบ) เพื่อสร้างบริการเว็บ RESTful คุณสามารถดาวน์โหลดในตอนท้ายของบทความในการใช้รหัสในส่วนนี้

ในการกวดวิชานี้คุณจะได้เรียนรู้ต่อไปนี้:

  • สร้าง Webservice สงบ
  • ใช้พื้นเมือง PHP, ไม่ขึ้นอยู่กับกรอบการทำงานใด ๆ
  • รูปแบบ REST URI ที่จะปฏิบัติตามกฎระเบียบ
  • บริการสงบยอมรับและรูปแบบอาจจะกลับมา JSON, XML และอื่น ๆ
  • รหัสสถานะ HTTP การตอบสนองที่สอดคล้องกันขึ้นอยู่กับสถานการณ์
  • ส่วนหัวของการร้องขอการสาธิต
  • ใช้โปรแกรม REST เพื่อทดสอบบริการเว็บสงบ

ตัวอย่างของ Webservice สงบ

รหัสต่อไปนี้เป็นชั้นบริการสงบ Site.php:

ตัวอย่าง

<php?
/ *
* กวดวิชานี้จะแสดงให้เห็นถึงตัวอย่างของการสงบ
* บริการชั้นสงบ
* /
เว็บไซต์ชั้น {

$ เว็บไซต์ส่วนตัว = array (
1 => 'TaoBao'
2 => 'Google'
3 => 'w3big'
4 => 'Baidu'
5 => 'Weibo'
6 => 'Sina'

);


ฟังก์ชั่นที่สาธารณะ getAllSite () {
กลับ $ this -> เว็บไซต์;
}

ฟังก์ชั่นที่สาธารณะ getSite ($ ID) {

$ เว็บไซต์ = array ($ id = > ($ นี้ -> เว็บไซต์ [$ ID]) $ นี้ -> เว็บไซต์ [$ ID] :? $ นี้ -> เว็บไซต์ [1]);
กลับ $ เว็บไซต์;
}
}
?>

การทำแผนที่สงบบริการ URI

สงบบริการ URI ควรจะกำหนดให้สั้นอยู่ทรัพยากรภาพ เซิร์ฟเวอร์ htaccess ของ Apache ควรจะตั้งค่าเขียนกฎที่สอดคล้องกัน

ตัวอย่างนี้เราจะใช้สองกฎ URI:

1 เพื่อให้ได้รายชื่อของเว็บไซต์ทั้งหมด:

http://localhost/restexample/site/list/

2 โดยใช้ ID สำหรับเว็บไซต์ที่ระบุ URI ที่ต่อไปนี้จะได้รับรหัสจาก 3 เว็บไซต์:

http://localhost/restexample/site/list/3/

กฎการกำหนดค่าhtaccess ไฟล์ของโครงการมีดังนี้

# 开启 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]

ควบคุมการบริการเว็บสงบ

ในhtaccess ไฟล์เราจะได้รับ RestController.php ยื่นคำขอที่สอดคล้องกันโดยการตั้งค่าพารามิเตอร์ 'มุมมอง' โดยได้รับค่าพารามิเตอร์ที่แตกต่างกัน 'ดู' เพื่อแจกจ่ายกับวิธีการที่แตกต่างกันRestController.php รหัสไฟล์จะเป็นดังนี้:

ตัวอย่าง

<php?
require_once ( "SiteRestHandler.php");

มุมมอง $ = "";
(isset ($ _GET & # ถ้า ; "มุมมอง" & # 93; 91))
มุมมอง $ = $ _GET & # 91 ; "มุมมอง" & # 93 ;;
/ *
* บริการควบคุมสงบ
* แม็พ URL
* /
สวิทช์ ($ มุมมอง) {

กรณี "ทุกคน":
// จัดการส่วนที่เหลือ Url เว็บไซต์ / / / รายการ
$ siteRestHandler = ใหม่ SiteRestHandler ();
$ siteRestHandler -> getAllSites ();
break;

กรณี "เดี่ยว":
// จัดการส่วนที่เหลือ Url เว็บไซต์ / / การแสดง / < ID> /
$ siteRestHandler = ใหม่ SiteRestHandler ();
$ siteRestHandler -> getSite ($ _GET [ "id"]);
break;

กรณี "":
// 404 - ไม่พบ;
break;
}
?>

ที่เรียบง่ายสงบเรียนมูลนิธิ

ต่อไปนี้จะให้ชั้นฐานสงบสำหรับการประมวลผลในการตอบสนองต่อการร้องขอของรหัสสถานะ HTTP ที่ SimpleRest.php รหัสไฟล์จะเป็นดังนี้:

ตัวอย่าง

<php?
/ *
* ง่ายบริการเว็บสงบชั้นฐาน
* เราสามารถขยายชั้นนี้ตามความต้องการ
* /
ระดับ SimpleRest {

$ ส่วนตัว httpVersion = "HTTP / 1.1 ";

setHttpHeaders ทำงานสาธารณะ ($ contentType, $ statusCode) {

$ = $ StatusMessage นี้ -> getHttpStatusMessage ($ statusCode);

ส่วนหัว ($ นี้ -> httpVersion " " $ statusCode .. "" $ StatusMessage .. );
ส่วนหัว ( "Content-Type:" $ contentType.);
}

ฟังก์ชั่นที่สาธารณะ getHttpStatusMessage ($ statusCode) {
$ httpStatus = array (
100 => 'ดำเนินการต่อ'
101 => 'การสลับโปรโตคอล'
200 => 'ตกลง'
201 => 'สร้าง'
202 => 'ยอมรับ'
203 => 'ไม่มีสิทธิ์ข้อมูล '
204 => 'ไม่มีเนื้อหาที่'
205 => "รีเซ็ตเนื้อหา '
206 => 'เนื้อหาบางส่วน'
300 => 'หลายทางเลือก'
301 => 'ย้ายถาวร'
302 => 'พบ'
303 => 'ดูอื่น ๆ '
304 => 'Not Modified'
305 => 'ใช้พร็อก'
306 => '(ไม่ได้ใช้)' ,
307 => 'ชั่วคราวเปลี่ยนเส้นทาง'
400 => 'ร้องขอไม่ถูกต้อง'
401 => 'ไม่ได้รับอนุญาต "
402 => 'ต้องชำระเงิน'
403 => 'พระราชวังต้องห้าม'
404 => 'ไม่พบ'
405 => 'วิธีการที่ไม่อนุญาต' ,
406 => 'ยอมรับไม่ได้'
407 => 'พร็อกซีรับรองความถูกต้องต้องใช้' ,
408 => 'Request Timeout'
409 => 'ขัดแย้ง'
410 => 'ไป'
411 => 'ความยาวที่จำเป็น'
412 => 'Precondition ล้มเหลว',
413 => 'ขอ Entity ขนาดใหญ่เกินไป '
414 => 'ขอ URI เกินไป ยาว'
415 => 'ไม่สนับสนุนประเภทสื่อ' ,
416 => 'ขอช่วงไม่พอใจ '
417 => 'ความคาดหวังล้มเหลว',
500 => 'ข้อผิดพลาดภายในเซิร์ฟเวอร์' ,
501 => 'Not Implemented'
502 => 'Bad เกตเวย์'
503 => 'ไม่พร้อมใช้งานบริการ'
504 => 'เกตเวย์หมดเวลา'
505 => 'HTTP เวอร์ชันไม่สนับสนุน ');
ผลตอบแทน ($ httpStatus [$ statusCode] ) $ httpStatus [$ statusCode]: สถานะ $ [500] ;?
}
}
?>

เว็บระดับการประมวลผลบริการสงบ

ต่อไปนี้เป็นสงบบริการเว็บจัดการระดับ SiteRestHandler.php สืบทอดข้างต้นเราให้ชั้นฐานสงบชั้นจะถูกกำหนดโดยพารามิเตอร์ของการร้องขอเพื่อตรวจสอบว่ารหัสสถานะ HTTP กลับมาและรูปแบบข้อมูลที่เรามีให้ตัวอย่างของสามรูปแบบข้อมูล: "application / JSON", "application / XML" หรือ "text / html":

SiteRestHandler.php รหัสไฟล์จะเป็นดังนี้:

ตัวอย่าง

<php?
require_once ( "SimpleRest.php");
require_once ( "Site.php");

ระดับ SiteRestHandler ขยาย SimpleRest {

getAllSites ฟังก์ชั่น () {

$ = เว็บไซต์เว็บไซต์ใหม่ ();
$ = $ ข้อมูลดิบเว็บไซต์ -> getAllSite ();

ถ้า (ที่ว่างเปล่า ($ ข้อมูลดิบ)) {
$ statusCode = 404;
$ ข้อมูลดิบ = array ( 'ข้อผิดพลาด' => 'ไม่พบเว็บไซต์!');
} else {
$ statusCode = 200;
}

$ requestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
$ this -> setHttpHeaders ($ requestContentType , $ statusCode);

ถ้า (strpos ($ requestContentType ' application / JSON')! == เท็จ) {
การตอบสนอง $ = $ นี้ -> encodeJson ($ ข้อมูลดิบ);
echo $ ตอบสนอง
} else if (strpos ($ requestContentType 'text / html')! == เท็จ) {
การตอบสนอง $ = $ นี้ -> encodeHtml ($ ข้อมูลดิบ);
echo $ ตอบสนอง
} else if (strpos ($ requestContentType 'application / XML)! == เท็จ) {
การตอบสนอง $ = $ นี้ -> encodeXml ($ ข้อมูลดิบ);
echo $ ตอบสนอง
}
}

ฟังก์ชั่นที่สาธารณะ encodeHtml ($ responseData) {

$ htmlResponse = "<table border = '1'>";
foreach ($ responseData เป็น $ key = > $ value) {
.. $ htmlResponse = "<TR > <td>" $ สำคัญ "</ td> <td>" $ ค่า "</ td> </ tr>" ... ;
}
. $ htmlResponse = "</ table >";
กลับ $ htmlResponse;
}

ฟังก์ชั่นที่สาธารณะ encodeJson ($ responseData) {
$ jsonResponse = json_encode ($ responseData) ;
ผลตอบแทน $ jsonResponse;
}

ฟังก์ชั่นที่สาธารณะ encodeXml ($ responseData) {
// สร้าง SimpleXMLElement วัตถุ
$ = XML ใหม่ SimpleXMLElement ( '< เว็บไซต์> </ เว็บไซต์> <XML version = "1.0" ??>');
foreach ($ responseData เป็น $ key = > $ value) {
$ XML -> addChild ($ คีย์ , $ value);
}
ผลตอบแทน $ XML -> asXML () ;
}

ฟังก์ชั่นที่สาธารณะ getSite ($ ID) {

$ = เว็บไซต์เว็บไซต์ใหม่ ();
$ = $ ข้อมูลดิบเว็บไซต์ -> getSite ($ ID);

ถ้า (ที่ว่างเปล่า ($ ข้อมูลดิบ)) {
$ statusCode = 404;
$ ข้อมูลดิบ = array ( 'ข้อผิดพลาด' => 'ไม่พบเว็บไซต์!');
} else {
$ statusCode = 200;
}

$ requestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
$ this -> setHttpHeaders ($ requestContentType , $ statusCode);

ถ้า (strpos ($ requestContentType ' application / JSON')! == เท็จ) {
การตอบสนอง $ = $ นี้ -> encodeJson ($ ข้อมูลดิบ);
echo $ ตอบสนอง
} else if (strpos ($ requestContentType 'text / html')! == เท็จ) {
การตอบสนอง $ = $ นี้ -> encodeHtml ($ ข้อมูลดิบ);
echo $ ตอบสนอง
} else if (strpos ($ requestContentType 'application / XML)! == เท็จ) {
การตอบสนอง $ = $ นี้ -> encodeXml ($ ข้อมูลดิบ);
echo $ ตอบสนอง
}
}
}
?>

ต่อไปเราผ่านทาง http: // localhost / restexample / เว็บไซต์ / รายการ / ครั้งผลการส่งออกมีดังนี้


ไคลเอ็นต์บริการเว็บสงบ

แล้วเราสามารถใช้ "แอ็ดวานซ์ส่วนที่เหลือลูกค้า" ลูกค้าบริการเว็บสงบเบราว์เซอร์ Google Chrome เพื่อขอรับบริการของเรา

ตัวอย่างของการร้องขอ http: // localhost / restexample / เว็บไซต์ / รายการ /ที่อยู่ข้อมูลที่ได้รับจะคล้ายกับการยอมรับ: application / JSON

3 คำขอ w3big เว็บไซต์ ID (กวดวิชา) ที่อยู่การเข้าถึงคือ http: // localhost / restexample / เว็บไซต์ / รายการ / 3 /

แหล่งที่มาของการดาวน์โหลด

รหัสที่ใช้ในตัวอย่างให้คลิกปุ่มด้านล่างเพื่อดาวน์โหลด:

แหล่งที่มาของการดาวน์โหลด