Latest web development tutorials
×

PHP curso

PHP curso PHP breve introducción PHP instalar PHP gramática PHP variable PHP echo/print PHP Tipos de datos PHP constante PHP cadena PHP operadores PHP If...Else PHP Switch PHP formación PHP Ordenación de un conjunto PHP superglobals PHP While circulación PHP For circulación PHP función PHP Las variables mágicas PHP Los espacios de nombres PHP Orientado a Objetos

PHP formulario

PHP formulario PHP autenticación de formularios PHP formulario - Los campos necesarios PHP formulario - correo electrónico de verificación y la URL PHP instancia completa formulario PHP $_GET variable PHP $_POST variable

PHP Tutorial avanzado

PHP Las matrices multidimensionales PHP fecha PHP contener PHP expediente PHP Cargar archivo PHP Cookie PHP Session PHP E-mail PHP seguridad E-mail PHP Error PHP Exception PHP filtro PHP filtro avanzado PHP JSON

PHP 7 nuevas características

PHP 7 nuevas características

PHP base de datos

PHP MySQL breve introducción PHP MySQL conexión PHP MySQL La creación de una base de datos PHP MySQL Crear una tabla de datos PHP MySQL insertar datos PHP MySQL Insertar datos múltiples PHP MySQL Sentencias preparadas PHP MySQL leer datos 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 introducción AJAX PHP AJAX base de datos AJAX XML AJAX búsqueda en tiempo real AJAX RSS Reader AJAX voto

PHP Manual de referencia

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 Procesamiento de imágenes PHP RESTful

PHP REST

REST (Inglés: Transferencia de estado representacional, llamado REST), se refiere a un conjunto de restricciones y principios de la arquitectura.

Diseño Web API estilo REST se llama una API REST. Se define a partir de los tres recursos siguientes:

  • Intuitiva breve recurso de dirección: URI, por ejemplo: http://example.com/resources/ .
  • recurso de transmisión: servicio web acepta el regreso de los tipos de medios de Internet, tales como: JSON, XML, YAM gusta.
  • El funcionamiento de los recursos: método de servicio Web en una serie de peticiones en el recurso compatible (por ejemplo: POST, GET, PUT o DELETE).

En este tutorial vamos a utilizar el PHP (sin marco) para crear un servicio web REST, se puede descargar al final del artículo para utilizar el código de esta sección.

En este tutorial, aprenderá lo siguiente:

  • Crear un servicio web REST.
  • Uso de PHP nativo, no depende de ningún marco.
  • DESCANSO patrón URI para seguir las reglas.
  • servicio REST acepta y formato puede ser devuelto JSON, XML y así sucesivamente.
  • códigos de estado HTTP de respuesta en función de la situación correspondiente.
  • solicitudes de demostración de cabecera.
  • Usar cliente de REST para probar el servicio web REST.

Ejemplos de servicio web REST

El código siguiente es la clase de servicio REST Site.php:

Ejemplos

<? Php
/ *
* Este tutorial muestra ejemplos de REST
* Clase de servicio REST
* /
Sitio de clase {

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

);


getAllSite función pública () {
return $ this -> sitios;
}

getSite función pública ($ id) {

$ Site = array ($ id = > ($ this -> sitios [$ id]) $ this -> sitios [$ id] :? $ this -> sitios [1]);
devolver $ sitio;
}
}
?>

mapeo de Servicios REST URI

Servicios REST URI debe establecerse en un breve discurso recursos visuales. servidor Apache .htaccess debería establecerse reglas de reescritura correspondiente.

En este ejemplo vamos a utilizar dos reglas URI:

1, para obtener una lista de todos los sitios:

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

2, utilizando el ID para el sitio especificado, el siguiente URI para obtener el ID de 3 sitios:

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

reglas de configuración del archivo.htaccess del proyecto son los siguientes:

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

En el archivo.htaccess, nos pondremos RestController.php presentar la solicitud correspondiente al establecer el parámetro "vista", consiguiendo diferentes parámetros de la "vista" para distribuir a diferentes métodos.código de archivo RestController.php es el siguiente:

Ejemplos

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

$ View = "";
if (isset ($ _GET & # 91; "vista" & # 93;))
$ View = $ _GET & # 91 ; "vista" & # 93 ;;
/ *
* Controlador de servicio REST
* Asignación de URL
* /
switch ($ view) {

caso "todos":
// Manejar RESTO Url / site / Lista /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getAllSites ();
romper;

caso "único":
// Manejar RESTO Url / site / espectáculo / < id> /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getSite ($ _GET [ "id"]);
romper;

caso "":
// 404 - no encontrado;
romper;
}
?>

Las clases simples Fundación REST

A continuación se proporciona una clase base de descanso para el procesamiento en respuesta a la petición del código de estado HTTP, código del archivo SimpleRest.php es el siguiente:

Ejemplos

<? Php
/ *
* Una simple clase base de servicios web RESTful
* Podemos extender esta clase basado en la demanda
* /
SimpleRest clase {

$ Privada httpVersion = "HTTP / 1.1 ";

setHttpHeaders de función pública ($ CONTENTTYPE, $ statuscode) {

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

cabecera ($ this -> httpVersion " " $ statuscode .. "" .. $ StatusMessage);
header ( "Content-Type:" $ contentType.);
}

getHttpStatusMessage función pública ($ statuscode) {
$ HttpStatus = array (
100 => 'Continuar',
101 => 'Switching Protocols',
200 => 'Aceptar',
201 => «creado»,
202 => 'Aceptado',
203 => 'no autorizada de información ',
204 => 'No Contenido',
205 => "Restablecer contenido ',
206 => 'Contenido parcial',
300 => 'Multiple Choices',
301 => 'Movido permanentemente',
302 => 'Encontrado',
303 => 'Ver Otros',
304 => 'no modificado ",
305 => 'Usar proxy',
306 => '(sin usar)' ,
307 => 'Redirección temporal',
400 => 'Bad Request',
401 => 'no autorizada',
402 => 'Necesita pago',
403 => "prohibida",
404 => 'no encontrado',
405 => 'Método no permitido' ,
406 => 'No Aceptable',
407 => 'Autentificación de poder' ,
408 => 'Solicitud de tiempo de espera',
409 => 'Conflicto',
410 => 'Gone',
411 => 'longitud requerida',
412 => 'Error de condición previa',
413 => 'Entidad de solicitud demasiado grande ',
414 => 'URI de solicitud demasiado largo',
415 => 'no admitido Tipo de papel' ,
416 => 'solicitada Range No satisfiable ',
417 => 'Error de expectativa »,
500 => 'Error interno del servidor " ,
501 => 'no implementado ",
502 => 'Bad Gateway,
503 => 'Servicio no disponible ",
504 => 'Tiempo de espera de puerta de enlace',
505 => 'Versión de HTTP no compatible ');
retorno ($ httpStatus [$ statuscode] ) $ httpStatus [statuscode $]: $ status [500] ;?
}
}
?>

REST clase de tratamiento servicio Web

La siguiente es una SiteRestHandler.php RESTful Web Service clase de controlador, heredaron la anterior proporcionamos clase base REST, la clase está determinada por los parámetros de la petición para determinar si los códigos de estado HTTP devueltos y los formatos de datos, que proporcionan ejemplos de los tres formatos de datos: "application / json", "application / xml" o "text / html":

código de archivo SiteRestHandler.php es el siguiente:

Ejemplos

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

SiteRestHandler clase extiende SimpleRest {

getAllSites function () {

$ Site = Sitio nuevo ();
$ = $ RawData sitio -> getAllSite ();

if (empty ($ rawData)) {
$ Statuscode = 404;
$ RawData = array ( 'error' => 'No se han encontrado sitios!');
} Else {
$ Statuscode = 200;
}

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

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

encodeHtml función pública ($ ResponseData) {

$ HtmlResponse = "<table border = " 1 ">";
foreach ($ ResponseData como $ clave = > $ value) {
.. $ HtmlResponse = "<tr > <td>" $ tecla "</ td> <td>" valor $ "</ td> </ tr>" ...;
}
. $ HtmlResponse = "</ table >";
devolver $ htmlResponse;
}

encodeJson función pública ($ ResponseData) {
$ JsonResponse = json_encode ($ ResponseData) ;
return $ jsonResponse;
}

encodeXml función pública ($ ResponseData) {
// Crear un objeto SimpleXMLElement
$ Xml = new SimpleXMLElement ( '< sitio> </ site> <? Xml version = "1.0" ??>');
foreach ($ ResponseData como $ clave = > $ value) {
$ Xml -> addChild ($ key , $ value);
}
return $ xml -> asXML () ;
}

getSite función pública ($ id) {

$ Site = Sitio nuevo ();
$ = $ RawData sitio -> getSite ($ id);

if (empty ($ rawData)) {
$ Statuscode = 404;
$ RawData = array ( 'error' => 'No se han encontrado sitios!');
} Else {
$ Statuscode = 200;
}

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

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

A continuación vamos a través de http: // localhost / restexample / site / / Lista de visita, los resultados de salida son los siguientes:


Cliente RESTful Web Service

Entonces podemos utilizar clientes de servicios web de tu navegador Google Chrome "Avance" Resto de clientes como REST para solicitar nuestros servicios.

Los ejemplos de la solicitud http: // localhost / restexample / sitio / lista / dirección, los datos recibidos son similares aAccept: application / json

3 Identificación de petición en sitios w3big (tutorial), dirección de acceso es http: // localhost / restexample / site / lista / 3 /,

fuente descarga

El código utilizado en el ejemplo que haga clic en el botón de abajo para descargar:

fuente descarga