Latest web development tutorials
×

PHP corso

PHP corso PHP breve introduzione PHP installare PHP grammatica PHP variabile PHP echo/print PHP Tipi di dati PHP costante PHP stringa PHP operatori PHP If...Else PHP Switch PHP schieramento PHP Ordinamento di un array PHP superglobals PHP While circolazione PHP For circolazione PHP funzione PHP Variabili magici PHP Namespace PHP Object-Oriented

PHP modulo

PHP modulo PHP Forms Authentication PHP modulo - I campi obbligatori PHP modulo - e-mail di verifica e l'URL PHP esempio forma completa PHP $_GET variabile PHP $_POST variabile

PHP Tutorial avanzato

PHP array multidimensionali PHP data PHP contenere PHP file PHP File Upload PHP Cookie PHP Session PHP E-mail PHP sicurezza E-mail PHP Error PHP Exception PHP filtro PHP Filtro avanzato PHP JSON

PHP 7 nuove funzionalità

PHP 7 nuove funzionalità

PHP Database

PHP MySQL breve introduzione PHP MySQL collegamento PHP MySQL Creazione di un database PHP MySQL Creare una tabella di dati PHP MySQL inserire i dati PHP MySQL Inserire più dati PHP MySQL prepared statement PHP MySQL leggere i dati 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 introduzione AJAX PHP AJAX Database AJAX XML AJAX ricerca in tempo reale AJAX RSS Reader AJAX voto

PHP Manuale di riferimento

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 Elaborazione immagini PHP RESTful

PHP RESTful

REST (inglese: Representational State Transfer, chiamato REST), si riferisce a un insieme di vincoli architettonici e principi.

REST-stile di disegno Web API viene chiamata una API RESTful. Essa è definita dalle seguenti tre risorse:

  • Intuitivo breve risorsa indirizzo: URI, ad esempio: http://example.com/resources/ .
  • risorsa di trasmissione: servizio Web accetta il ritorno di tipi di media di Internet, come ad esempio: JSON, XML, YAM piace.
  • Funzionamento delle risorse: metodo di servizio Web in una serie di richieste sulla risorsa supportato (ad esempio: POST, GET, PUT e DELETE).

Questo tutorial useremo il PHP (senza cornice) per creare un servizio Web RESTful, è possibile scaricare alla fine di questo articolo di utilizzare il codice in questa sezione.

In questo tutorial, imparerete quanto segue:

  • Creare un webservice RESTful.
  • Utilizzo di PHP nativo, non dipende da alcun quadro.
  • RIPOSO modello URI a seguire le regole.
  • servizi RESTful accetta e formato può essere restituito JSON, XML e così via.
  • codici di stato HTTP di risposta a seconda della situazione corrispondente.
  • richieste Demo intestazione.
  • Utilizzare client REST per testare il servizio Web RESTful.

Esempi di Webservice RESTful

Il seguente codice è riposante classe di servizio Site.php:

Esempi

<? Php
/ *
* Questo tutorial mostra esempi di RESTful
* Classe di servizio RESTful
* /
Classe del sito {

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

);


Funzione pubblica getAllSite () {
return $ questo - siti>;
}

Funzione pubblica getSite ($ id) {

$ Sito = array ($ id = > ($ this -> siti [$ id]) $ this -> siti [$ id] :? $ questo -> siti [1]);
return $ sito;
}
}
?>

mappatura RESTful Servizi URI

RESTful Servizi URI deve essere impostato su un breve indirizzo di risorse visive. Server Apache .htaccess dovrebbe essere istituito corrispondenti regole di riscrittura.

In questo esempio useremo due regole URI:

1, per ottenere un elenco di tutti i siti:

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

2, usando l'id per il sito specificato, il seguente URI per ottenere l'ID di 3 siti:

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

regole di configurazione file.htaccess del progetto sono i seguenti:

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

Controller RESTful Web Service

Nel file.htaccess, otterremo RestController.php il file corrispondente richiesta impostando il parametro 'view', ottenendo diversi parametri 'Visualizza' da distribuire ai diversi metodi.codice del file RestController.php è il seguente:

Esempi

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

$ View = "";
if (isset ($ _GET & # 91; "vista" & # 93;))
$ View = $ _GET & # 91 ; "vista" & # 93 ;;
/ *
* Controller di servizio RESTful
* Mappatura URL
* /
switch ($ vista) {

caso "tutto":
// Handle REST URL / sito / list /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getAllSites ();
break;

caso "unico":
// Handle REST URL / sito / mostra / < id> /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getSite ($ _GET [ "id"]);
break;

caso "":
// 404 - non trovato;
break;
}
?>

Semplici Classes RESTful Foundation

Ciò che segue fornisce una classe base RESTful per l'elaborazione in risposta alla richiesta del codice di stato HTTP, codice del file SimpleRest.php è il seguente:

Esempi

<? Php
/ *
* Un semplice i servizi web RESTful classe base
* Possiamo estendere questa classe in base alla domanda
* /
class SimpleRest {

$ Privata httpVersion = "HTTP / 1.1 ";

setHttpHeaders funzione pubblica ($ ContentType, $ StatusCode) {

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

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

Funzione pubblica getHttpStatusMessage ($ statusCode) {
$ HttpStatus = array (
100 => 'Continua',
101 => 'Protocolli di commutazione',
200 => 'OK',
201 => 'Creato',
202 => 'accettato',
203 => 'non autorevole Informazione ',
204 => 'No Content',
205 => 'Reset Content',
206 => 'Contenuto parziale',
300 => 'Scelte multiple',
301 => 'Spostato in modo permanente',
302 => 'trovato',
303 => 'vedere altri',
304 => 'Non modificato',
305 => 'Usa Proxy',
306 => '(non utilizzato)' ,
307 => 'Temporary Redirect',
400 => 'Bad Request',
401 => 'non autorizzata',
402 => 'pagamento richiesto',
403 => 'Forbidden',
404 => 'non trovato',
405 => 'Metodo non consentito' ,
406 => 'Non accettabile',
407 => 'Autenticazione proxy richiesta' ,
408 => 'Richiesta Timeout',
409 => 'conflitto',
410 => 'finiti',
411 => 'lunghezza desiderata',
412 => 'Condizione preliminare non riuscita',
413 => 'Entità richiesta troppo grande ',
414 => 'Request-URI Too Long',
415 => 'Tipo di supporto non supportato' ,
416 => 'richiesto intervallo Non satisfiable ',
417 => 'L'attesa non riuscita',
500 => 'Internal Server Error' ,
501 => 'Non Implementato',
502 => 'Bad Gateway',
503 => 'Servizio non disponibile',
504 => 'Gateway Timeout',
505 => 'HTTP Version Not Supported ');
ritorno ($ httpStatus [$ statusCode] ) $ httpStatus [$ statusCode]: $ stato [500] ;?
}
}
?>

classe di trasformazione del servizio Web RESTful

Il seguente è un RESTful Web Service classe del gestore SiteRestHandler.php, ereditato quanto sopra forniamo classe base RESTful, la classe è determinata dai parametri della richiesta per determinare se i codici di stato HTTP restituito e formati di dati, ci forniscono esempi di tre formati di dati: "application / json", "application / xml" o "text / html":

codice del file SiteRestHandler.php è il seguente:

Esempi

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

Classe SiteRestHandler estende SimpleRest {

getAllSites function () {

$ Sito = new sito ();
$ RawData = $ sito -> getAllSite ();

if (empty ($ rawData)) {
$ StatusCode = 404;
$ RawData = array ( 'errore' => 'Nessun sito trovato!');
} Else {
$ StatusCode = 200;
}

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

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

Funzione pubblica encodeHtml ($ responseData) {

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

Funzione pubblica encodeJson ($ responseData) {
$ JsonResponse = json_encode ($ responseData) ;
return $ jsonResponse;
}

Funzione pubblica encodeXml ($ responseData) {
// Creazione di un oggetto SimpleXMLElement
$ Xml = new SimpleXMLElement ( '< sito> </ site> <xml version = "1.0" ??>');
foreach ($ responseData da $ key = > $ value) {
$ Xml -> addChild ($ chiave , $ value);
}
return $ xml -> asXml () ;
}

Funzione pubblica getSite ($ id) {

$ Sito = new sito ();
$ RawData = $ sito -> getSite ($ id);

if (empty ($ rawData)) {
$ StatusCode = 404;
$ RawData = array ( 'errore' => 'Nessun sito trovato!');
} Else {
$ StatusCode = 200;
}

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

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

Poi abbiamo attraverso http: // localhost / restexample / sito / list / visita, i risultati di output sono i seguenti:


Client RESTful Web Service

Allora possiamo usare come RESTful client dei servizi Web "Advance Resto client" del suo navigatore web Google Chrome per richiedere i nostri servizi.

Esempi di richiesta http: // localhost / restexample / sito / list / indirizzi, i dati ricevuti è simile aAccept: application / JSON

3 richiesta ID sito w3big (tutorial), indirizzo di accesso è http: // localhost / restexample / site / elenco / 3 /,

scaricare fonte

Il codice utilizzato nell'esempio per fare clic sul pulsante qui sotto per scaricare:

scaricare fonte