Latest web development tutorials
×

PHP curso

PHP curso PHP breve introdução PHP instalar PHP gramática PHP variável PHP echo/print PHP Tipos de dados PHP constante PHP corda PHP operadores PHP If...Else PHP Switch PHP ordem PHP Classificação de uma matriz PHP superglobais PHP While circulação PHP For circulação PHP função PHP Variáveis ​​mágicas PHP namespaces PHP Object-Oriented

PHP formulário

PHP formulário PHP Autenticação de formulários PHP formulário - campos obrigatórios PHP formulário - -mail de verificação e URL PHP instância de formulário completo PHP $_GET variável PHP $_POST variável

PHP Tutorial avançado

PHP arrays multidimensionais PHP data PHP conter PHP arquivo PHP Carregar arquivo PHP Cookie PHP Session PHP E-mail PHP segurança E-mail PHP Error PHP Exception PHP filtro PHP Filtro avançado PHP JSON

PHP 7 novos Recursos

PHP 7 novos Recursos

PHP banco de dados

PHP MySQL breve introdução PHP MySQL conexão PHP MySQL Criação de um banco de dados PHP MySQL Criar uma tabela de dados PHP MySQL inserir dados PHP MySQL Inserir dados múltiplos PHP MySQL instruções preparadas PHP MySQL ler dados 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 breve introdução AJAX PHP AJAX banco de dados AJAX XML AJAX busca em tempo real AJAX RSS Reader AJAX voto

PHP manual de referência

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 Processamento de imagem PHP RESTful

PHP RESTful

DESCANSO (Inglês: Representational State Transfer, denominado REST), refere-se a um conjunto de restrições e princípios arquitetônicos.

Web design API estilo REST é chamada de API RESTful. Define-se a partir dos três recursos seguintes:

  • Intuitiva breve recurso de endereço: URI, por exemplo: http://example.com/resources/ .
  • recurso de transmissão: serviço da Web aceita o retorno de tipos de mídia de Internet, tais como: JSON, XML, YAM gosta.
  • Exploração de recursos: método de serviço Web em uma série de pedidos no recurso suportado (por exemplo: POST, GET, PUT ou DELETE).

Neste tutorial, vamos usar o PHP (sem moldura) para criar um serviço web RESTful, você pode baixar no final do artigo para usar o código nesta seção.

Neste tutorial, você vai aprender o seguinte:

  • Criar um serviço Web RESTful.
  • Utilizando PHP nativo, não depende de qualquer estrutura.
  • DESCANSAR padrão de URI a seguir as regras.
  • serviço RESTful aceita e formato podem ser devolvidos JSON, XML e assim por diante.
  • códigos de status HTTP de resposta dependendo da situação correspondentes.
  • pedidos de demonstração cabeçalho.
  • Use cliente REST para testar o serviço web RESTful.

Exemplos de Webservice RESTful

O código a seguir é classe de serviço RESTful Site.php:

Exemplos

<? Php
/ *
* Este tutorial demonstra exemplos de RESTful
* Classe de serviço RESTful
* /
Sítio da classe {

$ sites privados = array (
1 => 'TaoBao',
2 => 'Google',
3 => 'w3big',
4 => 'Baidu',
5 => 'Weibo',
6 => 'Sina'

);


getAllSite função pública () {
return $ this -> locais;
}

função pública getSite ($ id) {

$ Site = array ($ id = > ($ this -> locais [$ id]) $ this -> locais [$ id] :? $ this -> locais [1]);
return $ local;
}
}
?>

mapeamento RESTful Serviços URI

RESTful Serviços URI deve ser definido como um breve endereço de recursos visuais. servidor Apache .htaccess deve ser configurar regras de reconfiguração correspondente.

Neste exemplo, usaremos duas regras URI:

1, para obter uma lista de todos os locais:

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

2, usando o id para o local especificado, a seguinte URI para obter o ID de 3 locais:

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

regras de configuração do arquivo.htaccess do projeto são os seguintes:

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

Controlador RESTful Web Service

No arquivo.htaccess, vamos obter o arquivo RestController.php correspondente pedido, definindo o parâmetro 'view', obtendo parâmetros diferentes a 'visão' para distribuir para diferentes métodos.código de arquivo RestController.php é a seguinte:

Exemplos

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

$ View = "";
if (isset ($ _GET & # 91; "vista" & # 93;))
$ View = $ _GET & # 91 ; "vista" & # 93 ;;
/ *
* Controlador de serviço RESTful
* Mapeamento de URL
* /
switch ($ view) {

caso "todos":
// Pega RESTO Url / site / list /
$ SiteRestHandler = new SiteRestHandler ();
SiteRestHandler $ -> getAllSites ();
break;

caso "único":
// Pega RESTO Url / site / show / < id> /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getSite ($ _GET [ "id"]);
break;

caso "":
// 404 - não encontrado;
break;
}
?>

Simples Classes RESTful Fundação

A seguir fornece uma classe base RESTful para processamento em resposta ao pedido do código de status HTTP, o código de arquivo SimpleRest.php é a seguinte:

Exemplos

<? Php
/ *
* A classe simples base de serviços Web RESTful
* Podemos estender esta classe com base na demanda
* /
classe SimpleRest {

Private $ httpVersion = "HTTP / 1.1 ";

setHttpHeaders função pública ($ contentType, $ statusCode) {

$ StatusMessage = $ this -> getHttpStatusMessage ($ statusCode);

header ($ this -> httpVersion " " $ statusCode .. "" $ statusMessage ..);
header ( "Content-Type:" $ contentType.);
}

função pública getHttpStatusMessage ($ statusCode) {
$ HttpStatus = array (
100 => 'Continuar',
101 => 'Switching Protocols',
200 => 'OK',
201 => "criado",
202 => 'Aceito',
203 => 'não-autorizada de Informação ',
204 => 'Nenhum conteúdo',
205 => 'Reset Content',
206 => 'Conteúdo Parcial',
300 => 'Escolhas múltiplas ",
301 => 'Movido permanentemente',
302 => 'encontrado',
303 => 'Ver Outros',
304 => 'Não modificado ",
305 => 'Use Proxy',
306 => '(não utilizado)' ,
307 => 'Temporary Redirect',
400 => 'Bad Request',
401 => 'não autorizado',
402 => "Pagamento obrigatório",
403 => 'proibida',
404 => 'não encontrado',
405 => 'Método não permitido " ,
406 => 'Não é aceitável',
407 => 'Autenticação de proxy necessária " ,
408 => 'Timeout Request',
409 => 'Conflito',
410 => 'Gone',
411 => 'Comprimento exigido',
412 => 'Condição prévia falhada',
413 => 'Request Entity Too Large ',
414 => 'Request-URI Too Long',
415 => 'Tipo de mídia não suportado' ,
416 => 'Intervalo solicitado não satisfatório ',
417 => 'Falha na expectativa',
500 => 'Erro de servidor interno " ,
501 => 'não implementado ",
502 => 'Bad gateway',
503 => 'Serviço não disponível ",
504 => 'gateway timeout',
505 => 'HTTP Versão não apoiada ');
retorno ($ httpStatus [$ statusCode] ) $ httpStatus [$ statusCode]: $ estatuto [500] ;?
}
}
?>

classe de processamento Serviço RESTful Web

O seguinte é uma RESTful Web Service classe de manipulador SiteRestHandler.php, herdou a acima nós fornecemos classe base RESTful, a classe é determinada pelos parâmetros da solicitação para determinar se os códigos de status HTTP retornado e formatos de dados, que fornecem exemplos de três formatos de dados: "application / json", "application / xml" ou "text / html":

código de arquivo SiteRestHandler.php é a seguinte:

Exemplos

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

classe SiteRestHandler estende SimpleRest {

getAllSites function () {

$ Site = novo site ();
$ RawData = $ local -> getAllSite ();

if (empty ($ rawData)) {
$ StatusCode = 404;
$ RawData = array ( 'error' => 'Não há sites encontrados!');
} Else {
$ StatusCode = 200;
}

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

if (strpos ($ requestContentType, ' application / json')! == false) {
$ Resposta = $ this -> encodeJson ($ rawData);
echo $ response;
} Else if (strpos ($ requestContentType , 'text / html')! == False) {
$ Resposta = $ this -> encodeHtml ($ rawData);
echo $ response;
} Else if (strpos ($ requestContentType , 'application / xml')! == False) {
$ Resposta = $ this -> encodeXml ($ rawData);
echo $ response;
}
}

função pública encodeHtml ($ responseData) {

$ HtmlResponse = "<table border = " 1 ">";
foreach ($ responseData quanto $ key = > $ value) {
.. $ HtmlResponse = "<tr > <td>" $ key "</ td> <td>" $ value "</ td> </ tr>" ...;
}
. $ HtmlResponse = "</ table >";
return $ htmlResponse;
}

função pública encodeJson ($ responseData) {
$ JsonResponse = json_encode ($ responseData) ;
return $ jsonResponse;
}

encodeXml função pública ($ responseData) {
// Criar um objeto SimpleXMLElement
$ Xml = new SimpleXMLElement ( '< site> </ site> <xml version = "1.0" ??>');
foreach ($ responseData quanto $ key = > $ value) {
$ Xml -> addChild ($ key , $ value);
}
return $ xml -> asXML () ;
}

função pública getSite ($ id) {

$ Site = novo site ();
$ RawData = $ local -> getSite ($ id);

if (empty ($ rawData)) {
$ StatusCode = 404;
$ RawData = array ( 'error' => 'Não há sites encontrados!');
} Else {
$ StatusCode = 200;
}

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

if (strpos ($ requestContentType, ' application / json')! == false) {
$ Resposta = $ this -> encodeJson ($ rawData);
echo $ response;
} Else if (strpos ($ requestContentType , 'text / html')! == False) {
$ Resposta = $ this -> encodeHtml ($ rawData);
echo $ response;
} Else if (strpos ($ requestContentType , 'application / xml')! == False) {
$ Resposta = $ this -> encodeXml ($ rawData);
echo $ response;
}
}
}
?>

Em seguida nós através http: // localhost / restexample / site / list / visita, os resultados de saída são as seguintes:


Cliente RESTful Web Service

Então, podemos usar como RESTful clientes de serviços da Web "avanço Resto do Cliente" do navegador do Google Chrome para solicitar os nossos serviços.

Exemplos do pedido http: // localhost / restexample / site / list / endereço, os dados recebidos é semelhante aoAceitar: application / json

3 pedido local id w3big (tutorial), endereço de acesso é http: // localhost / restexample / site / list / 3 /,

Download fonte

O código usado no exemplo de clicar no botão abaixo para baixar:

Download fonte