PHP relaksującego
REST (w języku angielskim: Representational State Transfer, zwany ODPOCZYNEK), odnosi się do zestawu ograniczeń architektonicznych i zasad.
REST stylu Web API projekt nazywa się relaksującego API. Jest ona definiowana z trzech następujących środków:
- Intuicyjny krótki adres zasobu: URI, na przykład:
http://example.com/resources/
. - zasób Przekładnia: usługa sieci Web akceptuje zwrotu typów mediów internetowych, takich jak: JSON, XML, YAM podoba.
- Eksploatacja zasobów: metoda usługa sieci Web w szeregu wniosków o zasobie obsługiwane (np: POST, GET, PUT i DELETE).
Ten poradnik użyjemy PHP (bez ramki), aby utworzyć relaksującego usługi internetowej, można pobrać na końcu artykułu przy użyciu kodu w tym rozdziale.
W tym poradniku dowiesz się, co następuje:
- Tworzenie relaksującego WebService.
- Korzystanie z natywną PHP, nie zależy od żadnych ram.
- REST URI wzór, aby przestrzegać zasad.
- Usługa akceptuje relaksującego i format może zostać zwrócony JSON, XML i tak dalej.
- kody stanu HTTP odpowiedź w zależności od sytuacji.
- Demo wnioski cel.
- Użyj klienta REST do testowania relaksującego usługę internetową.
Przykłady relaksującego WebService
Poniższy kod jest relaksującego klasy usługi Site.php:
Przykłady
/ *
* Ten poradnik pokazuje przykłady relaksującego
* Relaksującego klasy usługi
* /
Klasa Site {
prywatne strony $ = array (
1 => 'Taobao "
2 => 'Google'
3 => 'w3big "
4 => 'Baidu "
5 => 'Weibo "
6 => 'Sina'
);
public function getAllSite () {
return $ this -> witryn;
}
public function getSite ($ id) {
$ Site = array ($ id = > ($ this -> strony [$ id]) $ this -> strony [$ id] :? $ this -> strony [1]);
return $ stronę;
}
}
?>
Mapowanie relaksującego usługi URI
Relaksującego usługi URI powinien być ustawiony na krótki adres środków wizualnych. Serwer Apache .htaccess należy ustanowić odpowiednimi zasadami przepisać.
W tym przykładzie użyjemy dwóch reguł URI:
1, aby uzyskać listę wszystkich stron:
http://localhost/restexample/site/list/
2, przy użyciu identyfikatora dla określonej dodaje URI, aby uzyskać identyfikator 3 stron:
http://localhost/restexample/site/list/3/
.htaccess zasady konfiguracji pliku projektu są następujące:
# 开启 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]
Kontroler relaksującego Web Service
W pliku.htaccess, dostaniemy RestController.php złożyć odpowiedni wniosek, poprzez ustawienie parametru 'view', dostając 'Widok' różne parametry do dystrybucji do różnych metod.RestController.php kod pliku jest następująca:
Przykłady
require_once ( "SiteRestHandler.php");
$ View = "";
if (isset _GET ($ & # 91; "widokiem" & # 93;))
$ View = $ _GET & # 91 ; "view" & # 93 ;;
/ *
* Usługa relaksującego kontroler
* URL mapowania
* /
switch ($ view) {
Sprawa "all":
// Uchwyt REST URL / site / lista /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getAllSites ();
break;
Sprawa "single":
// Uchwyt REST URL / strony / show / < id> /
$ SiteRestHandler = new SiteRestHandler ();
$ SiteRestHandler -> getSite ($ _GET [ "id"]);
break;
Przypadek "":
// 404 - Nie znaleziono;
break;
}
?>
Proste Ćwiczenia relaksującego Foundation
Poniżej przedstawiono klasy bazowej relaksującego do przetwarzania w odpowiedzi na żądanie kodu stanu HTTP, SimpleRest.php kod pliku jest następująca:
Przykłady
/ *
* Prosty REST Web Services klasy bazowej
* Możemy rozszerzyć tę klasę w zależności od zapotrzebowania
* /
Klasa SimpleRest {
private $ httpVersion = "HTTP / 1.1 ";
setHttpHeaders public function ($ contenttype, $ StatusCode) {
Komunikat stanu $ = $ this -> getHttpStatusMessage ($ statusCode);
Nagłówek ($ this -> httpVersion " " $ statusCode pl "" $ Komunikat stanu pl);
header ( "Content-Type:" $ contentType.);
}
public function getHttpStatusMessage ($ statusCode) {
$ HttpStatus = array (
100 => 'Kontynuuj',
101 => 'Protokoły przełączania "
200 => 'OK',
201 => 'Utworzone',
202 => 'Zaakceptowany "
203 => 'nieautorytatywnych Informacje "
204 => 'Nie Content',
205 => 'Reset Content',
206 => 'Partial Content',
300 => 'Multiple Choices "
301 => 'Przeniesiony na stałe "
302 => 'Found "
303 => 'Zobacz inne "
304 => 'Not Modified "
305 => 'Proxy',
306 => '(nieużywany) " ,
307 => 'Temporary Redirect "
400 => 'Bad Request "
401 => "nieuprawnione"
402 => 'Płatność Wymagane'
403 => 'Forbidden'
404 => 'Not Found ",
405 => 'Method Not Allowed " ,
406 => 'Nie do przyjęcia "
407 => 'Proxy Authentication Required " ,
408 => 'Przekroczenie limitu czasu żądania "
409 => 'Konflikt'
410 => 'Przeminęło "
411 => 'Długość Wymagane'
412 => 'Warunek Failed "
413 => 'Zbyt duże żądanie "
414 => 'Request-URI Too Long',
415 => 'nieobsługiwany Typ nośnika " ,
416 => 'Żądane Range spełnialna "
417 => 'Oczekiwanie Failed "
500 => 'Internal Server Error " ,
501 => 'Nie zaimplementowano "
502 => 'Bad Brama "
503 => 'Usługa niedostępna "
504 => 'Brama Timeout "
505 => 'HTTP Version Not Supported ');
return ($ httpStatus [$ statusCode] ) $ httpStatus [$ statusCode]: $ Status [500] ;?
}
}
?>
Relaksującego Web klasy materiały budowlane
Poniżej znajduje się Web Service relaksującego klasy obsługi SiteRestHandler.php odziedziczył powyższe zapewniamy relaksującego klasy podstawowej, klasy zależy od parametrów wniosku w celu ustalenia, czy zwracane kody stanu HTTP i formatów danych, zapewniamy przykłady trzech formatów danych: "application / json", "application / xml" i "text / html":
SiteRestHandler.php kod pliku jest następująca:
Przykłady
require_once ( "SimpleRest.php");
require_once ( "Site.php");
Klasa SiteRestHandler rozciąga SimpleRest {
getAllSites function () {
$ Site = new Site ();
$ RawData = $ site -> getAllSite ();
if (empty ($ rawData)) {
$ StatusCode = 404;
$ RawData = array ( 'błąd' => 'Nie znaleziono strony!');
} Else {
$ StatusCode = 200;
}
$ RequestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
$ This -> setHttpHeaders ($ requestContentType , $ statusCode);
if (strpos ($ requestContentType " application / json")! == false) {
$ Response = $ this -> encodeJson ($ rawData);
echo $ response;
} Else if (strpos ($ requestContentType "text / html")! == False) {
$ Response = $ this -> encodeHtml ($ rawData);
echo $ response;
} Else if (strpos ($ requestContentType "application / xml")! == False) {
$ Response = $ this -> encodeXml ($ rawData);
echo $ response;
}
}
public function encodeHtml ($ responseData) {
$ HtmlResponse = "<table border = " 1 ">";
foreach ($ responseData jako $ key = > $ value) {
pl $ HtmlResponse = "<tr > <td>" klucz $ "</ td> <td>" $ value "</ td> </ tr>" pl.;
}
. $ HtmlResponse = "</ table >";
return $ htmlResponse;
}
public function encodeJson ($ responseData) {
$ JsonResponse = json_encode ($ responseData) ;
return $ jsonResponse;
}
public function encodeXml ($ responseData) {
// Utwórz obiekt SimpleXMLElement
$ Xml = new SimpleXMLElement ( '< strona> </ strona> <? Xml version = "1.0" ??>');
foreach ($ responseData jako $ key = > $ value) {
$ Xml -> addChild ($ key , $ value);
}
return $ xml -> asXML () ;
}
public function getSite ($ id) {
$ Site = new Site ();
$ RawData = $ site -> getSite ($ id);
if (empty ($ rawData)) {
$ StatusCode = 404;
$ RawData = array ( 'błąd' => 'Nie znaleziono strony!');
} Else {
$ StatusCode = 200;
}
$ RequestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
$ This -> setHttpHeaders ($ requestContentType , $ statusCode);
if (strpos ($ requestContentType " application / json")! == false) {
$ Response = $ this -> encodeJson ($ rawData);
echo $ response;
} Else if (strpos ($ requestContentType "text / html")! == False) {
$ Response = $ this -> encodeHtml ($ rawData);
echo $ response;
} Else if (strpos ($ requestContentType "application / xml")! == False) {
$ Response = $ this -> encodeXml ($ rawData);
echo $ response;
}
}
}
?>
Następnie za pośrednictwem http: // localhost / restexample / site / lista / wizyta wyniki wyjściowe są następujące:
Klient relaksującego Web Service
Wtedy możemy użyć jako relaksującego klientów usług internetowych w przeglądarce Google Chrome "Advance Reszta klient" poprosić naszych usług.
Przykłady żądanie http: // localhost / restexample / site / lista / adresu, otrzymane dane są podobne doAccept: application / json
3 Żądanie strona id w3big (samouczek), adres dostępu jest http: // localhost / restexample / site / lista / 3 /,
Źródło pobrania
Kod użyty w przykładzie kliknij przycisk poniżej aby pobrać: