「クリーンURL」は「レストフルURL」とも呼ばれ、ユーザーフレンドリで純粋な構造であり、クエリ文字列は含まれていません。代わりに、リソースのパスのみが含まれます。
例: "http://Twitter.com/users/show/"+username+".json"
サーバー側の機能に関する質問:
各ディレクトリに一意のサーバー側APIスクリプトを作成する必要がありますか?
クリーンURL構造($ _GET ['url_structure'])から有用な情報を取得するにはどうすればよいですか?
Twitterが、確かに存在しない.jsonファイルを呼び出すのはなぜですか。要求に応じて生成する必要があります。これはどのように作動しますか?これにより、質問2の答えはイエスであると信じるようになります。
1)RecessPHP のようなRESTfulフレームワークを使用する場合、または.htaccessファイルでmod_rewriteルールを使用してリダイレクトする場合ではありません単一のPHPファイル(フロントコントローラーと呼ばれる)へのすべてのAPIリクエスト。
。htaccess
RewriteEngine On
RewriteRule ^/api/ api.php
api.php
$request = $_SERVER['REQUEST_URI']; //this would be /users/show/abc.json
2)Apacheの書き換えモジュールを使用して、すべてのapiリクエストを特別なPHPを処理するファイルにリダイレクトしますApacheの構成に応じて、元の要求された(RESTful)URLはPHPのサーバー変数に保存されます。$_SERVER['REQUEST_URI']
。もちろん、$_GET[]
変数をPHPにRESTful URLが含まれていた。
。htaccess
RewriteEngine On
RewriteRule ^/api/([^\.]+).(xml|json|atom) api.php?url=$1&type=$2
api.php
$request_parts = explode('/', $_GET['url']); // array('users', 'show', 'abc')
$file_type = $_GET['type'];
$output = get_data_from_db(); //Do your processing here
//You can outsource to other files via an include/require
//Output based on request
switch($file_type) {
case 'json':
echo json_encode($output);
break;
case 'xml':
echo xml_encode($output); //This isn't a real function, but you can make one
break;
default:
echo $output;
}
3)Twitter(および他の多くのAPI)は、アプリケーションがAPIから期待する形式を提供する便利な方法であるため、これを使用します。すべてのAPIリクエストは、単一のPHPファイルにリダイレクトされます。このファイルは、すべてのファイルを作成し、その内容を出力にエコーします。ファイルは、キャッシュされない限り、サーバーに保存されません) 。
優れたリソース
RecessPHPに関するメモ。それは確かに素晴らしいツールであり、あなたはそれを見ることをお勧めします(おそらくそのソースで物事を処理する方法のアイデアを得るために)が、それは私にとって少し不格好なようです。パス名が特別なコメントで書かれているという事実は、私にとってPHPではないようです。私はこれから遠ざかり、完璧なフレームワークとは言いませんが、それは確かに始まりです。幸運を!
これは私のために働いた:あなたのウェブサイトのルートにあるhtaccessファイルにこれを入れてください。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule api/(.*)$ api/api.php?request=$1 [QSA,NC,L]
RewriteRule (recipe/.*) api/app.php?request=$1 [QSA,NC,L]
</IfModule>
そして、ページにアクセスすると http:// localhost/api/person/susan にあるファイルが表示されます http:// localhost/api/api .php 使用するレシピページもあります http:// localhost/recipe/edit/2 これをapi.phpファイルに追加します。
<?php
$requestParts = explode('/',$_GET['request']);
$category = $requestParts[0];
$action = $requestParts[1];
$data = $requestParts[2];
if($category == 'recipe'){
include($_SERVER['DOCUMENT_ROOT'].'/pages/add_recipe.php');
}
上記の変数は、カテゴリ:レシピ、アクション:追加または編集、およびレシピのIDである数値または任意のデータを保持します。次に、add_recipe.php内で変数を使用して、レシピを編集しているか追加しているかを判断します。また、APIを使用する場合は、APIと通信するために使用しているajaxリクエストに応じて異なるファイルを含めることができます。
これを試して:
RewriteRule ^([^/]+)\/([^/]+)\/?$ getdata.php?para1=$1¶2=$2 [NC]