Latest web development tutorials
×

PHP コース

PHP コース PHP 簡単な紹介 PHP インストール PHP 文法 PHP 変数 PHP echo/print PHP データの種類 PHP 定数 PHP 文字列 PHP 演算子 PHP If...Else PHP Switch PHP 配列 PHP 配列のソート PHP スーパーグローバル PHP While 循環 PHP For 循環 PHP 関数 PHP マジック変数 PHP 名前空間 PHP オブジェクト指向の

PHP フォーム

PHP フォーム PHP フォーム認証 PHP フォーム - 必要なフィールド PHP フォーム - 確認メールおよびURL PHP 完全なフォームインスタンス PHP $_GET 変数 PHP $_POST 変数

PHP 応用チュートリアル

PHP 多次元配列 PHP 日付 PHP 含みます PHP ファイル PHP ファイルのアップロード PHP Cookie PHP Session PHP E-mail PHP セキュリティ E-mail PHP Error PHP Exception PHP フィルタ PHP 高度なフィルタ PHP JSON

PHP 7 新機能

PHP 7 新機能

PHP データベース

PHP MySQL 簡単な紹介 PHP MySQL 接続 PHP MySQL データベースの作成 PHP MySQL データテーブルを作成します。 PHP MySQL データを挿入 PHP MySQL 複数のデータの挿入 PHP MySQL プリペアドステートメント PHP MySQL データを読みます 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 簡単な紹介 AJAX PHP AJAX データベース AJAX XML AJAX 実時間探索 AJAX RSS Reader AJAX 投票

PHP リファレンスマニュアル

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 画像処理 PHP RESTful

PHPのRESTful

REST(英語:RESTと呼ばれるのRepresentational State Transferが、)、建築制約と原則のセットを指します。

RESTスタイルのWeb APIの設計は、RESTfulなAPIと呼ばれています。 これは、以下の3つのリソースから定義されています。

  • 直感的な簡単なアドレスリソース:URI、例えば: http://example.com/resources/
  • 送信リソース:JSON、XML、YAM様:Webサービスなどのインターネットメディアタイプ、のリターンを受け入れます。
  • リソースの動作:サポートされているリソースに対する要求のシリーズのWebサービスメソッド(例:POST、GET、PUTまたはDELETE)。

このチュートリアルで私たちは、あなたがこのセクションのコードを使用する記事の終わりにダウンロードすることができ、RESTfulなWebサービスを作成するためにPHP(枠なし)を使用します。

このチュートリアルでは、次のことを学習します。

  • RESTfulなWebサービスを作成します。
  • ネイティブPHPを使用して、任意のフレームワークに依存しません。
  • ルールに従うようにURIパターンをREST。
  • RESTfulなサービスが受け入れフォーマットは、というように、JSON、XMLとを返されることがあります。
  • 状況に応じて対応を対応するHTTPステータスコード。
  • デモは、ヘッダを要求します。
  • RESTfulなWebサービスをテストするためにRESTクライアントを使用してください。

RESTfulなWebサービスの例

次のコードは、RESTfulなサービスクラスSite.phpです

<?phpの
/ *
*このチュートリアルでは、RESTfulな例を示しています
* RESTfulなサービスクラス
* /
クラスサイト{

プライベート $部位=配列(
1 => '淘宝網」、
2 => 'Googleの、
3 => 'w3big」、
4 => 'Baiduの'
5 => 'Weibo」、
6 => 'シーナ」

);


パブリック関数getAllSite(){
$これを返す - >サイト。
}

パブリック関数getSite($のID){

$サイト=配列($ ID = >($この- >サイト[ます$ id])$この- >サイト[ます$ id] :? $この- >サイト[1]);
$サイトを返します
}
}
?>

RESTfulなサービスのURIマッピング

RESTfulなサービスURIは簡単な視覚的なリソースアドレスに設定する必要があります。 .htaccessのApacheサーバが書き換えルールを対応する設定する必要があります。

この例では、我々は2 URIのルールを使用します。

1、すべてのサイトのリストを取得します:

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

2、3サイトのIDを取得するには、指定されたサイトは、次のURIのIDを使用して:

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

次のようにプロジェクトの.htaccessファイルの構成規則は、次のとおりです。

# 开启 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サービスコントローラ

.htaccessファイルでは、我々はRestController.phpは異なる方法に配布する「ビュー」の異なるパラメータを取得することにより、パラメータ'ビュー'を設定することで対応する要求を提出取得します。RestController.phpファイルのコードは次のとおりです。

<?phpの
require_onceを (「SiteRestHandler.php ");

$ビュー= "";
(ISSET($ _GET&#の場合 、「ビュー」&#93; 91))
$ビュー= $ _GET&#91 ; "ビュー"&#93 ;;
/ *
* RESTfulなサービス・コントローラー
* URLマッピング
* /
スイッチ ($ビュー){

場合 「すべて」:
//ハンドルREST URL /サイト/リスト/
$ siteRestHandler =新しいSiteRestHandler();
$ siteRestHandler - > getAllSites();
破ります;

ケース 「シングル」:
// REST URL /サイト/ショー/ <ハンドル id>を/
$ siteRestHandler =新しいSiteRestHandler();
$ siteRestHandler - > getSite($ _GET [ "ID"]);
破ります;

ケース "":
// 404 -が見つかりません。
破ります;
}
?>

シンプルなRESTfulな基礎クラス

以下は、HTTPステータスコード、SimpleRest.phpファイルコードの要求に応じて、処理のためのRESTfulな基本クラスを提供し、次のとおりです。

<?phpの
/ *
*シンプルなRESTful Webサービスの基本クラス
*私たちは、需要に応じて、このクラスを拡張することができます
* /
クラス SimpleRest {

プライベート$ httpVersion = "HTTP / 1.1 ";

パブリック関数setHttpHeaders($のcontentType、$からstatusCode){

$ statusMessage = $この- > getHttpStatusMessage ($からstatusCode)。

ヘッダ($この- > httpVersion " " $からstatusCode .. "" $ statusMessage ..)。
ヘッダ( "のContent-Type:" 。$のcontentTypeの);
}

パブリック関数getHttpStatusMessage($からstatusCode){
$これらはhttpStatus =配列(
100 => '続行'
101 => 'スイッチングプロトコル」、
200 =>「OK」、
201 => '作成'
202 => '承認」、
203 => '非信頼できる情報 」、
204 => 'コンテンツなし」、
205 => '内容をリセット」、
206 => '部分コンテンツ」、
300 => '複数の選択肢」、
301 => '完全に移動」、
302 => 'が見つかりました」、
303 => 'その他を参照してください。'、
304 => '変更されていません」、
305 => 'プロキシを使用」、
306 => '(未使用)」
307 => '一時的なリダイレクト」、
400 => '不正な要求」、
401 => 'の不正」、
402は => '支払いが必要」、
403 => '禁断」、
404 => 'が見つかりません」、
405 => 'メソッド許可されていません」
406 => 'は受け入れられません」、
407 => 'プロキシ認証が必要」
408 => '要求タイムアウト」、
409 => '競合」、
410 => 'ゴーン」、
411 => '必要な長さ」、
412 => '前提条件に失敗しました」、
413 => '要求エンティティが大きすぎます 」、
414 => 'のRequest-URIあまりにも長いです」、
415 => 'サポートされていないメディアタイプ」
416 => '要求された範囲はありません充足 」、
417 => '期待に失敗しました」、
500 => '内部サーバーエラー」
501 => '実装されていません」、
502 => '不正なゲートウェイ」、
503 => 'サービスを使用できません」、
504 => 'ゲートウェイタイムアウト」、
505 => 'HTTPバージョンがサポートされていません ');
リターン($これらはhttpStatus [$からstatusCode] )$これらはhttpStatus [$からstatusCode]:$ステータス[500] ;?
}
}
?>

RESTfulなWebサービス処理クラス

以下は、RESTfulなWebサービス・ハンドラ・クラスSiteRestHandler.phpで、我々はRESTfulな基本クラスを提供する上に、クラスは返されたHTTPステータスコードとデータ形式かどうかを判断するためのリクエストのパラメータによって決定された継承され、我々は3つのデータ・フォーマットの例を示します。 "アプリケーション/ jsonの"、 "アプリケーション/ xmlの"または "text / htmlの":

SiteRestHandler.phpファイルのコードは次のとおりです。

<?phpの
require_onceを (「SimpleRest.php ");
require_onceを (「Site.php ");

クラス SiteRestHandlerはSimpleRestを{拡張します

関数 getAllSites(){

$サイト =新しいサイト();
$ RAWDATA = $サイト- > getAllSite ();

場合(空($生データ)) {
$からstatusCode = 404;
$ RAWDATA =配列( 'エラー' => 'が見つかりませんサイト!');
}エルス{
$からstatusCode = 200;
}

$ requestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
$この- > setHttpHeaders($ requestContentType 、$からstatusCode)。

場合(strpos($ requestContentType、「アプリケーション/ JSON ')!== false)の{
$応答= $この- > encodeJson ($生データ);
$応答をエコー
}エルス場合(strpos($ requestContentType 、 'text / htmlの')!==偽){
$応答= $この- > encodeHtml ($生データ);
$応答をエコー
}エルス(strpos($ requestContentType場合 、「アプリケーション/ xmlの')!==偽){
$応答= $この- > encodeXml ($生データ);
$応答をエコー
}
}

パブリック関数encodeHtml($ responseData){

$ htmlResponse = "<テーブルのボーダー= '1'>";
foreachの($として$ responseDataキー= > $値){
.. $ htmlResponse = "<trの > <TD>" $キー"</ TD> <TD>" $値"</ TD> </ TR>" ...;
}
。$ htmlResponse = "</テーブル >";
$ htmlResponseを返します
}

パブリック関数encodeJson($ responseData){
$ jsonResponse = json_encode($ responseData) 。
$ jsonResponseを返します
}

パブリック関数encodeXml($ responseData){
//オブジェクトを作成したSimpleXMLElement
$のxmlの=新しいのSimpleXMLElement( '<サイト> </サイト> <xmlのバージョン= "1.0"?>');
foreachの($として$ responseDataキー= > $値){
$のxmlの- >はaddChild($キー 、$値);
}
リターンの$のxml - > asXML() ;
}

パブリック関数getSite($のID){

$サイト =新しいサイト();
$ RAWDATA = $サイト- > getSite ($のID);

場合(空($生データ)) {
$からstatusCode = 404;
$ RAWDATA =配列( 'エラー' => 'が見つかりませんサイト!');
}エルス{
$からstatusCode = 200;
}

$ requestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
$この- > setHttpHeaders($ requestContentType 、$からstatusCode)。

場合(strpos($ requestContentType、「アプリケーション/ JSON ')!== false)の{
$応答= $この- > encodeJson ($生データ);
$応答をエコー
}エルス場合(strpos($ requestContentType 、 'text / htmlの')!==偽){
$応答= $この- > encodeHtml ($生データ);
$応答をエコー
}エルス(strpos($ requestContentType場合 、「アプリケーション/ xmlの')!==偽){
$応答= $この- > encodeXml ($生データ);
$応答をエコー
}
}
}
?>

次に我々は、httpを通じて次のように// localhost /をrestexample /サイト/リスト/訪問、出力結果は次のとおりです。


RESTfulなWebサービスクライアント

その後、我々は我々のサービスを要求するには、Google Chromeブラウザの「アドバンスレストクライアント」として、RESTfulなWebサービスクライアントを使用することができます。

リクエストはhttpの例:// localhost /をrestexample /サイト/リスト/アドレス、受信したデータがAcceptと似ています:アプリケーション/ JSON

3要求IDサイトw3big(チュートリアル)、アクセスアドレスはhttp:// localhost /をrestexample /サイト/リスト/ 3 /

ソースのダウンロード

例で使用されるコードは、ダウンロードするには、以下のボタンをクリックします:

ソースのダウンロード