FuelPHP - คำขอและการตอบสนอง

คำขอ HTTP และการตอบกลับ HTTP มีบทบาทสำคัญในเว็บแอปพลิเคชันใด ๆ เราจำเป็นต้องได้รับรายละเอียดที่สมบูรณ์ของคำขอ http เพื่อดำเนินการอย่างถูกต้อง เมื่อประมวลผลแล้วเราจำเป็นต้องส่งข้อมูลที่ประมวลผลไปยังไคลเอนต์ผ่านการตอบกลับ http

FuelPHP ให้ยอดเยี่ยม Request และ Responseคลาสเพื่ออ่านและเขียนคำขอ HTTP และการตอบสนอง HTTP ตามลำดับ ให้เราเรียนรู้เกี่ยวกับทั้งสองอย่างRequest และ Response ชั้นเรียนในบทนี้

ขอ

ในเว็บแอปพลิเคชันทั่วไปแอปพลิเคชันจำเป็นต้องแยกวิเคราะห์รายละเอียดของคำขอปัจจุบัน คลาสคำร้องขอมีวิธีการง่ายๆในการแยกวิเคราะห์คำร้องขอปัจจุบันที่จะดำเนินการโดยแอ็พพลิเคชัน คำขอยังมีตัวเลือกในการสร้างคำขอใหม่โดยทำหน้าที่เป็นไคลเอนต์ http

การสร้างคำขอใหม่ทำให้แอปพลิเคชันสามารถร้องขอส่วนอื่นของแอปพลิเคชันหรือแอปพลิเคชันอื่นทั้งหมดและแสดงผลลัพธ์ ให้เราเรียนรู้วิธีแยกวิเคราะห์คำขอที่เข้ามาในบทนี้และเรียนรู้วิธีสร้างคำขอใหม่ในบทคำขอ HMVC

การแยกวิเคราะห์คำขอ

คลาสคำขอมีสามวิธีในการรับรายละเอียดของคำขอ http มีดังนี้

active - เป็นวิธีการคงที่ซึ่งส่งคืนคำขอ http ที่ใช้งานอยู่ในปัจจุบัน

$currentRequest = Request::active();

param - ส่งคืนค่าของพารามิเตอร์ที่ระบุ มันมีสองอาร์กิวเมนต์ อาร์กิวเมนต์แรกคือชื่อพารามิเตอร์และอาร์กิวเมนต์ที่สองคือค่าที่จะส่งคืนหากพารามิเตอร์ไม่พร้อมใช้งานในคำขอ http ปัจจุบัน

$param = Request::active()->param('employee_name', 'none');

params - เหมือนกับพารามิเตอร์ยกเว้นว่าจะส่งกลับพารามิเตอร์ทั้งหมดเป็นอาร์เรย์

$params = Request::active()->params();

ตัวอย่าง

ให้เราสร้างแบบฟอร์มอย่างง่ายและประมวลผลแบบฟอร์มโดยใช้คลาสคำขอ

Step 1- สร้างการกระทำใหม่action_requestในตัวควบคุมพนักงาน

public function action_request() {
}

Step 2 - เรียกใช้วิธีการร้องขอเพื่อรับพารามิเตอร์ทั้งหมดของคำขอปัจจุบัน

public function action_request() {
   $params = Request::active()->params();
}

Step 3 - ถ่ายโอนอาร์เรย์พารามิเตอร์ที่ดึงมา

public function action_request() {
   $params = Request::active()->params();
   echo dump($params);
}

Step 4- เปลี่ยนการกำหนดเส้นทางเพื่อรวมพารามิเตอร์ไว้ในไฟล์กำหนดค่าเส้นทาง, fuel / app / config / route.php

'employee/request(/:name)?' => array('employee/request', 'name' => 'name'),

ตอนนี้ขอให้ดำเนินการใหม่http: // localhost: 8080 / workers / request / Jonจะแสดงการตอบสนองต่อไปนี้

การตอบสนอง

คลาสตอบกลับจัดเตรียมอ็อพชันเพื่อสร้างการตอบกลับ http โดยค่าเริ่มต้นเราไม่จำเป็นต้องใช้คลาสตอบกลับโดยตรงในสถานการณ์ส่วนใหญ่ แต่เราใช้View (ซึ่งเราจะเรียนรู้ในบทถัดไป) เพื่อสร้างการตอบสนอง http View ซ่อนการตอบกลับ http จากผู้พัฒนาและส่งการตอบกลับไปยังไคลเอนต์โดยใช้คลาสการตอบกลับที่อยู่เบื้องหลัง ในสถานการณ์ขั้นสูงเราใช้คลาสการตอบกลับโดยตรงและสร้างการตอบกลับ http ที่สมบูรณ์

การสร้างการตอบกลับ

การตอบสนองประกอบด้วยส่วนหัวและเนื้อหา ส่วนหัวหลักคือรหัสสถานะ http รหัสสถานะ HTTP เป็นรหัสมาตรฐานที่กำหนดไว้ในโปรโตคอล HTTP เพื่ออธิบายการตอบสนอง ตัวอย่างเช่นรหัสสถานะ 200 หมายถึงคำขอประสบความสำเร็จ

คลาสตอบกลับมีอาร์กิวเมนต์สามตัวเพื่อสร้างการตอบสนอง http

  • $body - เนื้อหาของการตอบสนอง http
  • $status_code - รหัสสถานะของการตอบสนอง http
  • $headers - ส่วนหัวเสริมเป็นอาร์เรย์
$body = "Hi, FuelPHP";
$headers = array (
   'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);

ให้เราสร้างการดำเนินการใหม่action_responseในตัวควบคุมพนักงานดังนี้

public function action_response() {
   $body = "Hi, FuelPHP";
   $headers = array (
      'Content-Type' => 'text/html',
   );
   $response = new Response($body, 200, $headers);
   return $response;
}

ผลลัพธ์

วิธีการ

คลาสตอบกลับมีวิธีการมากมายในการจัดการการตอบสนอง http มีดังนี้

forge - เหมือนกับตัวสร้างคลาสการตอบสนองตามที่เห็นด้านบน

return Response::forge("Hi, FuelPHP", 404);

redirect- มีตัวเลือกในการเปลี่ยนเส้นทางไปยัง URL แทนที่จะส่งการตอบกลับ มันมีอาร์กิวเมนต์ต่อไปนี้

a.url- URL ปลายทาง b. วิธีการ - วิธีการเปลี่ยนเส้นทาง ตำแหน่ง (ค่าเริ่มต้น) และรีเฟรช c.redirect_code - รหัสสถานะ http ค่าเริ่มต้นคือ 302

// use a URL
Response::redirect('http://some-domain/index', 'refresh');
// or use a relative URI
Response::redirect('employee/list');

redirect_back- คล้ายกับวิธีการเปลี่ยนเส้นทางยกเว้นว่าจะเปลี่ยนเส้นทางไปยังหน้าที่แล้ว เราสามารถระบุเพจการเปลี่ยนเส้นทางได้หากไม่มีเพจย้อนกลับ

// If there is no back page, go to the employee list page
Response::redirect_back('/employee/list', 'refresh');

set_status - มีตัวเลือกในการตั้งรหัสสถานะ http

$response = new Response();
$response->set_status(404);

set_header - มีตัวเลือกในการตั้งค่าส่วนหัว http

$response = new Response();
$response->set_header('Content-Type', 'application/pdf');
// replace previous value using third arguments
$response->set_header('Content-Type', 'application/pdf', 'text/plain');

set_headers- เหมือนกับset_headerยกเว้นว่ามีตัวเลือกในการตั้งค่าส่วนหัวหลายรายการโดยใช้อาร์เรย์

$response = new Response();
$response->set_headers(array
   'Content-Type' => 'application/pdf',
   'Pragma' => 'no-cache',
));

get_header - ช่วยให้รับรายละเอียดส่วนหัวของชุดก่อนหน้า

$response = new Response();
$response->set_header('Pragma', 'no-cache');
// returns 'no-cache'
$header = $response->get_header('Pragma');
// returns array('Pragma' => 'no-cache')
$header = $response->get_header();

body - มีตัวเลือกในการตั้งค่าเนื้อหาของการตอบสนอง http

$response = new Response();
$response->body('Hi, FuelPHP');
// returns 'Hi, FuelPHP'
$body = $response->body();

send_headers- ส่งส่วนหัวไปยังไคลเอนต์ที่ร้องขอ FuelPHP ใช้วิธีนี้เพื่อส่งการตอบกลับไปยังไคลเอนต์ โดยปกติเราไม่จำเป็นต้องใช้วิธีนี้

$response->send_headers();

Send - เช่นเดียวกับ send_headers ยกเว้นส่วนหัวอาจถูก จำกัด ในการตอบสนอง http

// send the headers as well
$response->send(true);
// only send the body
$response->send(false);
$response->send();