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

PHP RESTful
10/30