FuelPHP - Talepler ve Yanıt

HTTP isteği ve HTTP yanıtı, herhangi bir web uygulamasında önemli bir rol oynar. Doğru şekilde işlemek için http talebinin tüm ayrıntılarını almamız gerekir. İşlendikten sonra, işlenen verileri müşteriye http yanıtı yoluyla göndermemiz gerekir.

FuelPHP, mükemmel Request ve Responsesırasıyla HTTP isteğini ve HTTP yanıtını okumak ve yazmak için sınıf. İkisini de öğrenelimRequest ve Response Bu bölümdeki sınıf.

İstek

Tipik bir web uygulamasında, uygulamanın mevcut talebin ayrıntılarını ayrıştırması gerekir. İstek sınıfı, uygulama tarafından işlenecek geçerli isteği çözümlemek için basit yöntemler sağlar. İstek ayrıca bir http istemcisi olarak hareket ederek yeni bir istek oluşturma seçeneği de sağlar.

Yeni bir talep oluşturmak, uygulamanın uygulamanın başka bir bölümünü veya tamamen başka bir uygulamayı talep etmesini ve sonucu göstermesini sağlar. Bu bölümde gelen talebin nasıl ayrıştırılacağını ve HMVC İsteği bölümünde nasıl yeni bir istek oluşturulacağını öğrenelim.

Bir İsteği Ayrıştırma

İstek sınıfı, http isteğinin ayrıntılarını almak için üç yöntem sağlar. Bunlar aşağıdaki gibidir,

active - Mevcut aktif http talebini döndüren statik bir yöntemdir.

$currentRequest = Request::active();

param - Belirtilen parametrenin değerini döndürür. İki argüman içerir. İlk bağımsız değişken parametre adıdır ve ikinci bağımsız değişken, parametre geçerli http isteğinde mevcut değilse döndürülecek değerdir.

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

params - Tüm parametreleri bir dizi olarak döndürmesi dışında param ile aynıdır.

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

Misal

Basit bir form oluşturalım ve istek sınıfını kullanarak formu işleyelim.

Step 1- Çalışan denetleyicisinde yeni bir eylem, action_request oluşturun .

public function action_request() {
}

Step 2 - Mevcut talebin tüm parametrelerini almak için istek yöntemlerini çağırın.

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

Step 3 - Getirilen parametre dizisinin dökümünü alın.

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

Step 4- Yönlendirme yapılandırma dosyasındaki parametreleri dahil etmek için yönlendirmeyi değiştirin, fuel / app / config / route.php

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

Şimdi, http: // localhost: 8080 / worker / request / Jon adlı yeni eylemi istemek , aşağıdaki yanıtı gösterecektir.

Tepki

Yanıt sınıfı, bir http yanıtı oluşturmak için seçenekler sağlar. Varsayılan olarak, çoğu durumda doğrudan bir yanıt sınıfı kullanmamız gerekmez. Bunun yerine, http yanıtı oluşturmak için View (sonraki bölümde öğreneceğimiz) kullanıyoruz. View, geliştiriciden gelen http yanıtını gizler ve yanıtı temeldeki Response sınıfını kullanarak istemciye gönderir . Gelişmiş bir durumda, Response sınıfını doğrudan kullanıyoruz ve eksiksiz bir http yanıtı oluşturuyoruz.

Bir Yanıt Oluşturma

Yanıt, başlıklardan ve gövdeden oluşur. Ana başlık http durum kodudur. Http durum kodu, yanıtı açıklamak için HTTP protokolünde tanımlanan standart kodlardır. Örneğin, durum kodu 200, isteğin başarılı olduğu anlamına gelir.

Response sınıfı, http yanıtını oluşturmak için üç argüman sağlar,

  • $body - http yanıtının gövdesi
  • $status_code - http yanıtının durum kodu
  • $headers - dizi olarak isteğe bağlı başlıklar
$body = "Hi, FuelPHP";
$headers = array (
   'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);

Çalışan denetleyicisinde aşağıdaki gibi yeni bir eylem, action_response oluşturalım .

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

Sonuç

Yöntemler

Response sınıfı, http yanıtlarını işlemek için birçok yöntem sağlar. Bunlar aşağıdaki gibidir,

forge - Yukarıda görüldüğü gibi yanıt sınıfı oluşturucu ile aynıdır.

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

redirect- Yanıt göndermek yerine bir URL'ye yönlendirme seçeneği sağlar. Aşağıdaki argümanları içerir,

a.url- hedef url b. yöntem - yeniden yönlendirme yöntemleri. konum (varsayılan) ve c.redirect_code - http durum kodunu yenileyin . Varsayılan değer 302'dir.

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

redirect_back- Önceki sayfaya yönlendirmesi dışında yeniden yönlendirme yöntemine benzer. Arka sayfa yoksa yeniden yönlendirme sayfasını belirtebiliriz.

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

set_status - http durum kodunu ayarlama seçeneği sunar.

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

set_header - http başlıklarını ayarlama seçeneği sunar.

$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- dizi kullanarak birden çok başlık ayarlama seçeneği sunması dışında set_header ile aynıdır.

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

get_header - Önceki set başlık detaylarının alınmasını sağlar.

$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 yanıtının gövdesini ayarlama seçeneği sunar.

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

send_headers- Başlıkları istenen istemciye gönderir. FuelPHP, yanıtı istemciye göndermek için bu yöntemi kullanır. Normalde bu yöntemi kullanmamıza gerek yoktur.

$response->send_headers();

Send - send_headers ile aynıdır, ancak başlıklar http yanıtında kısıtlanabilir.

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