Das beste PHP RESTful-Tutorial im Jahr 2024. In diesem Tutorial können Sie
Beispiele für RESTful Webservice,Beispiele,RESTful Dienste URI-Mapping,RESTful Web Service Controller,Beispiele,Beispiele,Beispiele,RESTful Web Service Client, lernen
PHP RESTful
REST (englisch: Representational State Transfer, genannt REST), bezieht sich auf eine Reihe von architektonischen Zwänge und Prinzipien.
REST-Stil Web-API-Design ist eine RESTful API genannt. Es wird aus den folgenden drei Ressourcen definiert:
- Intuitive kurze Adresse Ressource: URI, zum Beispiel:
http://example.com/resources/
. - Übertragungsressource: Web Service die Rückkehr von Internet-Medientypen akzeptiert, wie zB: JSON, XML, YAM mögen.
- Der Betrieb von Ressourcen: Web-Service-Methode in einer Reihe von Anforderungen an die Ressource unterstützt (zB: POST, GET, PUT oder DELETE).
Dieses Tutorial werden wir die PHP (kein Rahmen) verwenden, um eine RESTful Web-Service zu erstellen, können Sie am Ende des Artikels herunterladen Sie den Code in diesem Abschnitt zu verwenden.
In diesem Tutorial lernen Sie wie folgt vor:
- Erstellen Sie eine RESTful Webservice.
- Mit nativen PHP, hängt nicht von jedem Rahmen.
- REST-URI-Muster, die Regeln zu befolgen.
- RESTful-Dienst akzeptiert und das Format JSON, XML zurückgegeben werden können und so weiter.
- HTTP-Statuscodes Antwort abhängig von der Situation entspricht.
- Demo-Anfragen Header.
- Verwenden Sie REST-Client RESTful Web-Service zu testen.
Beispiele für RESTful Webservice
Der folgende Code ist RESTful Serviceklasse seite.php:
Beispiele
<? Php
/ *
* Dieses Tutorial zeigt Beispiele von RESTful
* RESTful Service - Klasse
* /
Class - Site {
private $ sites = array (
1 => 'TaoBao',
2 => "Google",
3 => 'w3big',
4 => 'Baidu',
5 => 'Weibo',
6 => 'Sina'
);
public function getAllSite () {
Diese Rückkehr $ -> Websites;
}
public function getSite ($ id) {
$ Site = array ($ id = > ($ this -> Websites [$ id]) $ this -> Websites [$ id] :? $ this -> Websites [1]);
return $ Ort;
}
}
?>
RESTful Dienste URI-Mapping
RESTful Dienste URI sollte auf eine kurze visuelle Ressourcen-Adresse eingestellt werden. .htaccess Apache-Server sollte entsprechende Rewrite-Regeln eingerichtet werden.
In diesem Beispiel werden wir zwei URI-Regeln verwenden:
1, eine Liste aller Seiten, zu erhalten:
http://localhost/restexample/site/list/
2, die ID für die angegebene Website, die folgende URI die ID von 3 Seiten zu bekommen:
http://localhost/restexample/site/list/3/
.htaccess Datei - Konfigurationsregeln des Projekts sind wie folgt:
# 开启 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]
RESTful Web Service Controller
In der.htaccess - Datei, werden wir , indem sie durch die Einstellung der Parameter 'view', die entsprechenden Antrag stellen 'Ansicht' die verschiedenen Parameter erhalten RestController.php verschiedenen Methoden zu verteilen.RestController.php Datei Code ist wie folgt:
Beispiele
<? Php
require_once ( "SiteRestHandler.php");
$ View = "";
if (isset ($ _GET & # 91; "view" & # 93;))
$ View = $ _GET & # 91 ; "view" & # 93 ;;
/ *
* RESTful Service Controller
* URL - Mapping
* /
switch ($ view) {
Fall "alle":
// Handle REST URL / site / Liste /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getAllSites ();
brechen;
Fall "single":
// REST Griff URL / site / Show / < id> /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getSite ($ _GET [ "id"]);
brechen;
Fall "":
// 404 - wurde nicht gefunden;
brechen;
}
?>
Einfache RESTful Foundation Classes
Im Folgenden wird eine Basisklasse RESTful für die Verarbeitung in Reaktion auf die Anforderung des HTTP - Statuscode, Datei Code SimpleRest.php ist wie folgt:
Beispiele
<? Php
/ *
* Eine einfache Basisklasse RESTful Web Services
* Wir können diese Klasse erweitern basierend auf Nachfrage
* /
Klasse SimpleRest {
private $ httpVersion = "HTTP / 1.1 ";
public function setHttpHeaders ($ content, $ status) {
$ Status = $ this -> getHttpStatusMessage ($ status);
Header ($ this -> httpVersion " " $ status de "" $ status de);
header ( "Content-Type:" $ content.);
}
public function getHttpStatusMessage ($ status) {
$ Httpstatus = array (
100 => 'Weiter',
101 => 'Switching Protocols ",
200 => 'OK',
201 => 'Erstellt',
202 => 'akzeptiert',
203 => 'Nicht verbindliche Informationen ',
204 => 'Kein Inhalt',
205 => 'Reset Inhalt',
206 => 'Partial Content',
300 => 'Multiple Choices',
301 => 'dauerhaft verschoben',
302 => 'gefunden',
303 => 'Siehe Andere',
304 => 'Not Modified',
305 => 'Proxy verwenden',
306 => '(Nicht verwendete) " ,
307 => 'Temporary Redirect',
400 => 'Bad Request',
401 => 'Unerlaubte',
402 => 'Zahlung erforderlich',
403 => 'Forbidden',
404 => 'nicht gefunden ",
405 => 'Methode nicht erlaubt' ,
406 => 'Nicht akzeptabel',
407 => 'Proxy - Authentifizierung erforderlich' ,
408 => 'Request Timeout',
409 => 'Konflikt',
410 => 'Vorbei',
411 => 'Length Required',
412 => 'Vorbedingung nicht erfüllt ",
413 => 'Antrag Wesen zu groß ",
414 => 'Request-URI Too Long',
415 => 'Nicht unterstützter Medientyp' ,
416 => ' Die gesuchte Strecke nicht erfüllbar ',
417 => 'Erwartung verlassen',
500 => 'Internal Server Error " ,
501 => 'Nicht implementiert ",
502 => 'Bad Gateway',
503 => 'Service nicht verfügbar ",
504 => 'Gateway - Timeout',
505 => 'HTTP - Version wird nicht unterstützt ");
return ($ httpstatus [$ status] ) $ httpstatus [$ status]: $ status [500] ;?
}
}
?>
RESTful Web Service Verarbeitungsklasse
Das Folgende ist eine RESTful Web Service-Handler-Klasse SiteRestHandler.php, erbte die oben wir RESTful Basisklasse zur Verfügung stellen, die Klasse durch die Parameter des Antrags bestimmt wird, um zu bestimmen, ob die zurückgegebenen HTTP-Statuscodes und Datenformate, wir Beispiele von drei Datenformate zur Verfügung stellen: "application / json", "application / xml" oder "text / html":
SiteRestHandler.php Datei Code ist wie folgt:
Beispiele
<? Php
require_once ( "SimpleRest.php");
require_once ( "seite.php");
Klasse SiteRestHandler erweitert SimpleRest {
Funktion getAllSites () {
$ Site = new Website ();
$ RawData = $ site -> getAllSite ();
if (empty ($ rawData)) {
$ Status = 404;
$ RawData = array ( 'error' => 'nicht gefunden!');
} Else {
$ Status = 200;
}
$ RequestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
$ This -> setHttpHeaders ($ requestContentType , $ status);
if (strpos ($ requestContentType " application / json ')! == false) {
$ Response = $ this -> encodeJson ($ rawData);
$ Antwort Echo;
} Else if (strpos ($ requestContentType , 'text / html')! == False) {
$ Response = $ this -> encodeHtml ($ rawData);
$ Antwort Echo;
} Else if (strpos ($ requestContentType "application / xml ')! == False) {
$ Response = $ this -> encodeXml ($ rawData);
$ Antwort Echo;
}
}
public function encodeHtml ($ response) {
$ HtmlResponse = "<table border = " 1 ">";
foreach ($ response wie $ key = > $ value) {
de $ HtmlResponse = "<tr > <td>" $ key "</ td> <td>" $ value "</ td> </ tr>" de.;
}
. $ HtmlResponse = "</ table >";
return $ htmlResponse;
}
public function encodeJson ($ response) {
$ JsonResponse = json_encode ($ response) ;
return $ jsonResponse;
}
public function encodeXml ($ response) {
// Erstellen Sie ein Objekt SimpleXMLElement
$ Xml = new SimpleXMLElement ( '< site> </ site> < ? Xml version = "1.0" ??>');
foreach ($ response wie $ key = > $ value) {
$ Xml -> addChild ($ key , $ value);
}
return $ xml -> asXML () ;
}
public function getSite ($ id) {
$ Site = new Website ();
$ RawData = $ site -> getSite ($ id);
if (empty ($ rawData)) {
$ Status = 404;
$ RawData = array ( 'error' => 'nicht gefunden!');
} Else {
$ Status = 200;
}
$ RequestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
$ This -> setHttpHeaders ($ requestContentType , $ status);
if (strpos ($ requestContentType " application / json ')! == false) {
$ Response = $ this -> encodeJson ($ rawData);
$ Antwort Echo;
} Else if (strpos ($ requestContentType , 'text / html')! == False) {
$ Response = $ this -> encodeHtml ($ rawData);
$ Antwort Echo;
} Else if (strpos ($ requestContentType "application / xml ')! == False) {
$ Response = $ this -> encodeXml ($ rawData);
$ Antwort Echo;
}
}
}
?>
Als nächstes werden wir durch http: // localhost / restexample / site / Liste / besuchen, sind die Ausgabeergebnisse wie folgt:
RESTful Web Service Client
Dann können wir den Google-Browser Chrome "Advance-REST-Client" als RESTful Web Service-Clients nutzen, um unsere Dienstleistungen anfordern.
Beispiele für die Anfrage http: // localhost / restexample / site / Liste / Adresse, die empfangenen Daten ähnlich wieAccept: application / json
3 Anfrage-ID-Website w3big (Tutorial), die Zugriffsadresse http: // localhost / restexample / site / Liste / 3 /,
Quelle herunterladen
Der Code im Beispiel den Button klicken zum Download:
Quelle herunterladen