Latest web development tutorials
×

PHP cours

PHP cours PHP Brève introduction PHP installer PHP grammaire PHP variable PHP echo/print PHP Types de données PHP constante PHP chaîne PHP opérateurs PHP If...Else PHP Switch PHP tableau PHP Tri d'un tableau PHP Superglobales PHP While circulation PHP For circulation PHP fonction PHP Variables magiques PHP Namespaces PHP Object-Oriented

PHP forme

PHP forme PHP Authentification Forms PHP forme - Les champs obligatoires PHP forme - email de vérification et d'URL PHP Complète instance de formulaire PHP $_GET variable PHP $_POST variable

PHP Tutorial avancée

PHP Les tableaux multidimensionnels PHP date PHP contenir PHP fichier PHP File Upload PHP Cookie PHP Session PHP E-mail PHP sécurité E-mail PHP Error PHP Exception PHP filtre PHP filtre avancé PHP JSON

PHP 7 Nouvelles fonctionnalités

PHP 7 Nouvelles fonctionnalités

PHP Base de données

PHP MySQL Brève introduction PHP MySQL raccordement PHP MySQL La création d'une base de données PHP MySQL Créer une table de données PHP MySQL Insérer des données PHP MySQL Insérez des données multiples PHP MySQL Déclarations préparées PHP MySQL Lire les données 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 Brève introduction AJAX PHP AJAX Base de données AJAX XML AJAX Recherche en temps réel AJAX RSS Reader AJAX vote

PHP Manuel de référence

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 Traitement de l'image PHP RESTful

PHP RESTful

REST (Anglais: Representational State Transfer, appelé REST), fait référence à un ensemble de contraintes et principes architecturaux.

la conception de l'API Web REST-style est appelé une API RESTful. Elle est définie à partir des trois moyens suivants:

  • Intuitive brève ressource d'adresse: URI, par exemple: http://example.com/resources/ .
  • ressource de transmission: service Web accepte le retour des types de médias Internet, tels que: JSON, XML, YAM aime.
  • Exploitation des ressources: méthode de service Web dans une série de demandes sur la ressource prise en charge (par exemple: POST, GET, PUT ou DELETE).

Ce tutoriel, nous allons utiliser le PHP (pas de cadre) pour créer un service web RESTful, vous pouvez télécharger à la fin de l'article pour utiliser le code dans cette section.

Dans ce tutoriel, vous apprendrez ce qui suit:

  • Créer un Webservice RESTful.
  • En utilisant PHP natif, ne dépend pas de tout cadre.
  • REPOS motif URI de suivre les règles.
  • services RESTful accepte et le format peut être retourné JSON, XML et ainsi de suite.
  • codes d'état de réponse HTTP en fonction de la situation correspondant.
  • demandes de démonstration en-tête.
  • Utilisez client REST pour tester le service Web RESTful.

Des exemples de Webservice RESTful

Le code suivant est RESTful classe de service site.php:

Exemples

<? Php
/ *
* Ce tutoriel montre des exemples de RESTful
* RESTful classe de service
* /
Classe Site {

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

);


fonction publique getAllSite () {
return $ this -> Sites;
}

fonction publique getSite ($ id) {

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

cartographie RESTful services URI

RESTful services URI doit être réglé sur une brève allocution de ressources visuelles. serveur Apache .htaccess devrait être mis en place des règles de réécriture correspondant.

Cet exemple nous allons utiliser deux règles URI:

1, pour obtenir une liste de tous les sites:

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

2, en utilisant l'identifiant pour le site spécifié, l'URI suivante pour obtenir l'identifiant de 3 sites:

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

.htaccess règles de configuration du fichier du projet sont les suivants:

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

Contrôleur RESTful Web Service

Dans le fichier.htaccess, nous aurons RestController.php déposer la demande correspondante en définissant le paramètre 'view', en obtenant la «vue» différents paramètres à distribuer aux différentes méthodes.Code de fichier RestController.php est la suivante:

Exemples

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

$ View = "";
if (_GET isset ($ & # 91; "vue" & # 93;))
$ View = $ _GET & # 91 ; "vue" & # 93 ;;
/ *
* Contrôleur de service RESTful
* Mappage d'URL
* /
commutateur ($ view) {

cas «tous»:
// Gère REST Url / site / liste /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getAllSites ();
break;

cas "single":
// Gère REST Url / site / show / < id> /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getSite ($ _GET [ "id"]);
break;

cas "":
// 404 - not found;
break;
}
?>

Simple Foundation Classes RESTful

Ce qui suit fournit une classe de base RESTful pour le traitement en réponse à la demande du code d'état HTTP, le code de fichier SimpleRest.php est la suivante:

Exemples

<? Php
/ *
* Une simple classe de base de services Web RESTful
* Nous pouvons étendre cette classe basée sur la demande
* /
classe SimpleRest {

Private $ httpVersion = "HTTP / 1.1 ";

setHttpHeaders public function ($ contentType, $ statusCode) {

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

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

fonction publique getHttpStatusMessage ($ statusCode) {
$ HttpStatus = array (
100 => 'Continuer',
101 => 'Protocoles de commutation »,
200 => 'OK',
201 => 'Création',
202 => 'Accepted',
203 => 'Non-Authoritative information »,
204 => 'Aucun contenu',
205 => 'Reset Content',
206 => 'Contenu partiel',
300 => 'Multiple Choices »,
301 => 'Déplacé de manière permanente »,
302 => 'Found',
303 => 'Voir les autres »,
304 => 'Not Modified',
305 => 'Use Proxy',
306 => '(non utilisé)' ,
307 => 'Redirection temporaire »,
400 => 'Bad Request »,
401 => 'non autorisée',
402 => 'paiement requis',
403 => 'Interdit',
404 => 'non trouvé »,
405 => 'Méthode non autorisée » ,
406 => 'Non acceptable »,
407 => 'Authentification proxy requise » ,
408 => 'Request Timeout',
409 => 'conflit',
410 => ' Il est révolu »,
411 => 'Longueur obligatoire »
412 => 'Échec de précondition »,
413 => 'Entité de demande trop grand »,
414 => 'Request-URI Too Long',
415 => 'Type de support non pris en charge » ,
416 => 'Demandé Range Non Satisfiable ',
417 => 'Attente Échec »,
500 => 'Internal Server Error' ,
501 => 'Non mis en œuvre »,
502 => 'Bad Gateway »,
503 => 'Service Unavailable »,
504 => 'Gateway Timeout',
505 => 'HTTP Version Not Supported ');
retour ($ httpStatus [$ statusCode] ) $ httpStatus [$ statusCode]: $ status [500] ;?
}
}
?>

Web RESTful classe de traitement de service

Ce qui suit est une RESTful classe de gestionnaire de service Web SiteRestHandler.php, hérité de ce qui précède, nous fournissons la classe de base RESTful, la classe est déterminée par les paramètres de la requête pour déterminer si les codes d'état HTTP retournées et les formats de données, nous fournissent des exemples de trois formats de données: "application / json", "application / xml" ou "text / html":

Code de fichier SiteRestHandler.php est la suivante:

Exemples

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

classe SiteRestHandler étend SimpleRest {

getAllSites de fonction () {

$ Site = new Site ();
$ RawData = $ Site -> getAllSite ();

if (empty ($ rawData)) {
$ StatusCode = 404;
$ RawData = array ( 'error' => 'Aucun des sites trouvés!');
} Else {
$ StatusCode = 200;
}

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

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

fonction publique encodeHtml ($ responseData) {

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

fonction publique encodeJson ($ responseData) {
$ JsonResponse = json_encode ($ responseData) ;
return $ jsonResponse;
}

fonction publique encodeXml ($ responseData) {
// Créer un objet SimpleXMLElement
$ Xml = new SimpleXMLElement ( '< site> </ site> <xml version = "1.0" ??>');
foreach ($ responseData que $ key = > valeur de $) {
$ Xml -> addChild ($ key , $ value);
}
return $ xml -> asXML () ;
}

fonction publique getSite ($ id) {

$ Site = new Site ();
$ RawData = $ Site -> getSite ($ id);

if (empty ($ rawData)) {
$ StatusCode = 404;
$ RawData = array ( 'error' => 'Aucun des sites trouvés!');
} Else {
$ StatusCode = 200;
}

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

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

Ensuite, nous via http: // localhost / restexample / site / liste / visite, les résultats de sortie sont les suivantes:


Client RESTful Web Service

Ensuite, nous pouvons utiliser des clients de services Web "Advance Rest Client» comme RESTful du navigateur Google Chrome pour demander nos services.

Des exemples de la demande http: // localhost / restexample / site / liste / adresse, les données reçues est similaire àAccept: application / json

3 demande site id w3big (tutoriel), adresse d'accès est http: // localhost / restexample / site / liste / 3 /,

télécharger Source

Le code utilisé dans l'exemple de cliquer sur le bouton ci-dessous pour télécharger:

télécharger Source