FuelPHP - Solicitações e resposta
A solicitação e a resposta HTTP desempenham um papel importante em qualquer aplicativo da web. Precisamos obter os detalhes completos da solicitação http para processá-la corretamente. Uma vez processados, precisamos enviar os dados processados ao cliente por meio de resposta http.
FuelPHP fornece excelente Request e Responseclasse para ler e escrever solicitação HTTP e resposta HTTP, respectivamente. Vamos aprender sobre ambosRequest e Response classe neste capítulo.
Solicitação
Em um aplicativo da web típico, o aplicativo precisa analisar os detalhes da solicitação atual. A classe Request fornece métodos simples para analisar a solicitação atual a ser processada pelo aplicativo. A solicitação também fornece uma opção para criar uma nova solicitação agindo como um cliente http.
A criação de uma nova solicitação permite que o aplicativo solicite outra parte do aplicativo ou totalmente outro aplicativo e mostre o resultado. Vamos aprender como analisar a solicitação de entrada neste capítulo e aprender como criar uma nova solicitação no capítulo Solicitação HMVC.
Analisando uma solicitação
A classe Request fornece três métodos para obter os detalhes da solicitação http. Eles são os seguintes,
active - É um método estático, que retorna a solicitação http ativa atual.
$currentRequest = Request::active();
param - retorna o valor do parâmetro especificado. Ele contém dois argumentos. O primeiro argumento é o nome do parâmetro e o segundo argumento é o valor a ser retornado, se o parâmetro não estiver disponível na solicitação http atual.
$param = Request::active()->param('employee_name', 'none');
params - É o mesmo que param, exceto que retorna todos os parâmetros como uma matriz.
$params = Request::active()->params();
Exemplo
Vamos criar um formulário simples e processar o formulário usando a classe de solicitação.
Step 1- Crie uma nova ação, action_request no controlador de funcionário.
public function action_request() {
}
Step 2 - Chame os métodos de solicitação para obter todos os parâmetros da solicitação atual.
public function action_request() {
$params = Request::active()->params();
}
Step 3 - Despeje a matriz de parâmetro buscada.
public function action_request() {
$params = Request::active()->params();
echo dump($params);
}
Step 4- Altere o roteamento para incluir os parâmetros no arquivo de configuração da rota, fuel / app / config / routes.php
'employee/request(/:name)?' => array('employee/request', 'name' => 'name'),
Agora, solicitando a nova ação, http: // localhost: 8080 / employee / request / Jon , ele mostrará a seguinte resposta.
Resposta
A classe de resposta fornece opções para criar uma resposta http. Por padrão, não precisamos usar uma classe de resposta diretamente na maioria das situações. Em vez disso, usamos View (que aprenderemos no próximo capítulo) para criar uma resposta http. View oculta a resposta http do desenvolvedor e a envia ao cliente usando a classe Response subjacente . Em uma situação avançada, usamos a classe Response diretamente e criamos uma resposta http completa.
Criação de uma resposta
A resposta consiste em cabeçalhos e corpo. O cabeçalho principal é o código de status http. O código de status Http são códigos padrão definidos no protocolo HTTP para descrever a resposta. Por exemplo, um código de status 200 significa que a solicitação foi bem-sucedida.
A classe de resposta fornece três argumentos para criar a resposta http,
- $body - corpo da resposta http
- $status_code - código de status da resposta http
- $headers - cabeçalhos opcionais como matriz
$body = "Hi, FuelPHP";
$headers = array (
'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);
Vamos criar uma nova ação, action_response no controlador de funcionários da seguinte maneira.
public function action_response() {
$body = "Hi, FuelPHP";
$headers = array (
'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);
return $response;
}
Resultado
Métodos
A classe de resposta fornece vários métodos para manipular respostas http. Eles são os seguintes,
forge - É o mesmo que o construtor da classe de resposta, conforme visto acima.
return Response::forge("Hi, FuelPHP", 404);
redirect- Oferece a opção de redirecionar para uma URL em vez de enviar uma resposta. Ele contém os seguintes argumentos,
a.url- url de destino b. método - métodos de redirecionamento. local (padrão) e atualize c.redirect_code - código de status http. O valor padrão é 302.
// use a URL
Response::redirect('http://some-domain/index', 'refresh');
// or use a relative URI
Response::redirect('employee/list');
redirect_back- É semelhante ao método de redirecionamento, exceto que redireciona para a página anterior. Podemos especificar a página de redirecionamento, se nenhuma página posterior estiver disponível.
// If there is no back page, go to the employee list page
Response::redirect_back('/employee/list', 'refresh');
set_status - Fornece uma opção para definir o código de status http.
$response = new Response();
$response->set_status(404);
set_header - Fornece uma opção para definir os cabeçalhos 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- É o mesmo que set_header, exceto que fornece uma opção para definir vários cabeçalhos usando array.
$response = new Response();
$response->set_headers(array
'Content-Type' => 'application/pdf',
'Pragma' => 'no-cache',
));
get_header - Permite obter os detalhes do cabeçalho definidos anteriormente.
$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 - Fornece uma opção para definir o corpo da resposta http.
$response = new Response();
$response->body('Hi, FuelPHP');
// returns 'Hi, FuelPHP'
$body = $response->body();
send_headers- Envia os cabeçalhos ao cliente solicitado. O FuelPHP usa esse método para enviar a resposta ao cliente. Normalmente, não precisamos usar este método.
$response->send_headers();
Send - O mesmo que send_headers, exceto que os cabeçalhos podem ser restritos na resposta http.
// send the headers as well
$response->send(true);
// only send the body
$response->send(false);
$response->send();