Latest web development tutorials
×

PHP kuliah

PHP kuliah PHP pengantar singkat PHP memasang PHP tatabahasa PHP variabel PHP echo/print PHP Jenis Data PHP konstan PHP tali PHP operator PHP If...Else PHP Switch PHP susunan PHP Sorting array PHP superglobals PHP While sirkulasi PHP For sirkulasi PHP fungsi PHP Variabel sihir PHP Ruang nama PHP Berorientasi Objek

PHP bentuk

PHP bentuk PHP bentuk Authentication PHP bentuk - bidang yang harus diisi PHP bentuk - email verifikasi dan URL PHP contoh bentuk lengkap PHP $_GET variabel PHP $_POST variabel

PHP canggih Tutorial

PHP Array multidimensi PHP tanggal PHP berisi PHP berkas PHP Upload File PHP Cookie PHP Session PHP E-mail PHP keamanan E-mail PHP Error PHP Exception PHP filter PHP filter lanjutan PHP JSON

PHP 7 Fitur baru

PHP 7 Fitur baru

PHP database

PHP MySQL pengantar singkat PHP MySQL koneksi PHP MySQL Membuat database PHP MySQL Buat tabel data PHP MySQL memasukkan data PHP MySQL Menyisipkan beberapa data yang PHP MySQL Laporan disiapkan PHP MySQL membaca data 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 pengantar singkat AJAX PHP AJAX database AJAX XML AJAX pencarian real-time AJAX RSS Reader AJAX suara

PHP Reference manual

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 image Processing PHP RESTful

PHP tenang

ISTIRAHAT (bahasa Inggris: Negara Transfer, disebut REST), mengacu pada satu set kendala arsitektur dan prinsip-prinsip.

SISA-gaya desain web API disebut API tenang. Hal ini didefinisikan dari tiga sumber berikut:

  • Intuitif singkat sumber daya alamat: URI, misalnya: http://example.com/resources/ .
  • sumber daya transmisi: layanan Web menerima kembalinya jenis media internet, seperti: JSON, XML, YAM suka.
  • Operasi sumber: metode layanan Web dalam serangkaian permintaan pada sumber daya yang didukung (misalnya: POST, GET, PUT atau DELETE).

tutorial ini kita akan menggunakan PHP (tanpa bingkai) untuk membuat layanan web yang tenang, Anda dapat men-download di akhir artikel untuk menggunakan kode di bagian ini.

Dalam tutorial ini, Anda akan belajar sebagai berikut:

  • Buat Webservice tenang.
  • Menggunakan PHP asli, tidak tergantung pada kerangka apapun.
  • ISTIRAHAT pola URI untuk mengikuti aturan.
  • layanan tenang menerima dan format yang dapat dikembalikan JSON, XML dan sebagainya.
  • Kode status HTTP yang sesuai respon tergantung pada situasi.
  • permintaan demo tajuk.
  • Gunakan SISA klien untuk menguji layanan web tenang.

Contoh Webservice tenang

Kode berikut adalah tenang kelas layanan site.php:

contoh

<? Php
/ *
* Tutorial ini menunjukkan contoh tenang
* Kelas layanan tenang
* /
Kelas Site {

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

);


fungsi publik getAllSite () {
kembali $ this -> situs;
}

fungsi publik getSite ($ id) {

$ Situs = array ($ id = > ($ this -> situs [$ id]) $ this -> situs [$ id] :? $ this -> situs [1]);
kembali $ situs;
}
}
?>

pemetaan tenang Layanan URI

Tenang Jasa URI harus di set ke alamat sumber visual yang singkat. .htaccess Apache server harus diatur sesuai aturan Rewrite.

contoh ini kita akan menggunakan dua aturan URI:

1, untuk mendapatkan daftar semua situs:

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

2, menggunakan id untuk situs tertentu, berikut URI untuk mendapatkan id dari 3 situs:

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

aturan konfigurasihtaccess File dari proyek ini adalah sebagai berikut:

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

Tenang Web Service Controller

Dalam file.htaccess, kita akan mendapatkan RestController.php mengajukan sesuai permintaan dengan menetapkan parameter 'view', dengan mendapatkan parameter 'view' yang berbeda untuk mendistribusikan ke metode yang berbeda.file kode RestController.php adalah sebagai berikut:

contoh

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

$ View = "";
if (isset ($ _GET & # 91; "view" & # 93;))
$ View = $ _GET & # 91 ; "view" & # 93 ;;
/ *
* Kontroler layanan tenang
* Pemetaan URL
* /
switch ($ tampilan) {

kasus "semua":
// Menangani SISA Url / situs / daftar /
$ SiteRestHandler = baru SiteRestHandler ();
$ SiteRestHandler -> getAllSites ();
break;

kasus "tunggal":
// Menangani SISA Url / situs / show / < id> /
$ SiteRestHandler = baru SiteRestHandler ();
$ SiteRestHandler -> getSite ($ _GET [ "id"]);
break;

kasus "":
// 404 - tidak ditemukan;
break;
}
?>

Sederhana Kelas tenang Yayasan

Berikut ini menyediakan kelas dasar tenang untuk pengolahan dalam menanggapi permintaan dari kode status HTTP, file kode SimpleRest.php adalah sebagai berikut:

contoh

<? Php
/ *
* Sebuah layanan web yang tenang kelas dasar sederhana
* Kami dapat memperpanjang kelas ini berdasarkan permintaan
* /
class SimpleRest {

private $ httpVersion = "HTTP / 1.1 ";

setHttpHeaders fungsi publik ($ contentType, $ statusCode) {

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

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

fungsi publik getHttpStatusMessage ($ statusCode) {
$ HttpStatus = array (
100 => 'Lanjutkan',
101 => 'Switching Protokol',
200 => 'OK',
201 => 'Dibuat',
202 => 'Diterima',
203 => 'Non-Resmi Informasi ',
204 => 'Tidak ada Konten',
205 => 'Atur Ulang Konten',
206 => 'Content Partial',
300 => 'Beberapa Pilihan',
301 => 'Dipindahkan secara Permanen',
302 => 'Ditemukan',
303 => 'Lihat Lainnya',
304 => 'Tidak Diubah',
305 => 'Gunakan Proxy',
306 => '(tidak digunakan)' ,
307 => 'Temporary Redirect',
400 => 'Bad Request',
401 => 'tidak sah',
402 => 'Diperlukan Pembayaran',
403 => 'Terlarang',
404 => 'Tidak Ditemukan',
405 => 'Metode Tidak Diizinkan' ,
406 => 'Tidak dapat diterima',
407 => 'Proxy Authentication Required' ,
408 => 'Permintaan Timeout',
409 => 'Konflik',
410 => 'Hilang',
411 => 'Panjang Diperlukan',
412 => 'Persyaratan Gagal',
413 => 'Entitas Permintaan Terlalu Besar ',
414 => 'Request-URI Too Long',
415 => 'Tidak Didukung Media Type' ,
416 => 'Diminta Rentang Tidak Satisfiable ',
417 => 'Harapan Gagal',
500 => 'Internal Server Error' ,
501 => 'Tidak Diimplementasikan',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Timeout',
505 => 'Versi HTTP Tidak Didukung ');
kembali ($ httpStatus [$ statusCode] ) $ httpStatus [$ statusCode]: $ Status [500] ;?
}
}
?>

Tenang Web kelas pengolahan Layanan

Berikut ini adalah tenang Layanan Web handler kelas SiteRestHandler.php, mewarisi atas kami menyediakan kelas dasar tenang, kelas ditentukan oleh parameter permintaan untuk menentukan apakah kode status kembali HTTP dan format data, kami memberikan contoh tiga format data: "application / json", "aplikasi / xml" atau "text / html":

file kode SiteRestHandler.php adalah sebagai berikut:

contoh

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

kelas SiteRestHandler meluas SimpleRest {

getAllSites function () {

$ Situs = Site baru ();
$ Data mentah = $ situs -> getAllSite ();

if (empty ($ Data mentah)) {
$ StatusCode = 404;
$ Data mentah = array ( 'error' => 'Tidak ada situs yang ditemukan!');
} Lain {
$ StatusCode = 200;
}

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

if (strpos ($ requestContentType, ' application / json')! == false) {
$ Response = $ this -> encodeJson ($ Data mentah);
echo $ respon;
} Lain jika (strpos ($ requestContentType , 'text / html')! == Salah) {
$ Response = $ this -> encodeHtml ($ Data mentah);
echo $ respon;
} Lain jika (strpos ($ requestContentType , 'aplikasi / xml')! == Salah) {
$ Response = $ this -> encodeXml ($ Data mentah);
echo $ respon;
}
}

fungsi publik encodeHtml ($ responseData) {

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

fungsi publik encodeJson ($ responseData) {
$ JsonResponse = json_encode ($ responseData) ;
return $ jsonResponse;
}

fungsi publik encodeXml ($ responseData) {
// Buat SimpleXMLElement objek
$ Xml = new SimpleXMLElement ( '< situs> </ situs> <xml version = "1.0" ??>');
foreach ($ responseData sebagai $ key = > $ value) {
$ Xml -> addChild ($ key , $ value);
}
return $ xml -> asXML () ;
}

fungsi publik getSite ($ id) {

$ Situs = Site baru ();
$ Data mentah = $ situs -> getSite ($ id);

if (empty ($ Data mentah)) {
$ StatusCode = 404;
$ Data mentah = array ( 'error' => 'Tidak ada situs yang ditemukan!');
} Lain {
$ StatusCode = 200;
}

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

if (strpos ($ requestContentType, ' application / json')! == false) {
$ Response = $ this -> encodeJson ($ Data mentah);
echo $ respon;
} Lain jika (strpos ($ requestContentType , 'text / html')! == Salah) {
$ Response = $ this -> encodeHtml ($ Data mentah);
echo $ respon;
} Lain jika (strpos ($ requestContentType , 'aplikasi / xml')! == Salah) {
$ Response = $ this -> encodeXml ($ Data mentah);
echo $ respon;
}
}
}
?>

Selanjutnya kita melalui http: // localhost / restexample / situs / daftar / kunjungan, hasil output adalah sebagai berikut:


Tenang Web Service Client

Maka kita dapat menggunakan "Muka Istirahat Klien" sebagai tenang klien Layanan Web browser Google Chrome untuk meminta layanan kami.

Contoh permintaan http: // localhost / restexample / situs / daftar / alamat, data yang diterima miripTerima: aplikasi / json

3 permintaan situs id w3big (tutorial), alamat akses http: // localhost / restexample / situs / daftar / 3 /,

sumber download

Kode yang digunakan dalam contoh untuk klik tombol di bawah untuk mendownload:

sumber download