O melhor tutorial PHP RESTful em 2024. Neste tutorial você pode aprender Exemplos de Webservice RESTful,Exemplos,mapeamento RESTful Serviços URI,Controlador RESTful Web Service,Exemplos,Exemplos,Exemplos,Cliente RESTful Web Service,

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 pt "" $ statusMessage pt);
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) {
pt $ HtmlResponse = "<tr > <td>" $ key "</ td> <td>" $ value "</ td> </ tr>" pt.;
}
. $ 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

PHP RESTful
10/30