1) Không nếu bạn sử dụng một khuôn khổ RESTful như RecessPHP hoặc nếu bạn sử dụng một quy tắc mod_rewrite trong tập tin .htaccess bạn để chuyển hướng tất cả các yêu cầu API vào một tập tin PHP duy nhất (gọi là bộ điều khiển phía trước).
.htaccess
RewriteEngine On
RewriteRule ^/api/ api.php
api.php
$request = $_SERVER['REQUEST_URI']; //this would be /users/show/abc.json
2) Bạn có thể sử dụng các module viết lại của apache để chuyển hướng tất cả các yêu cầu api đến một đặc biệt Tệp PHP xử lý chúng. Tùy thuộc vào cấu hình apache của bạn, url được yêu cầu ban đầu (RESTful) sẽ được lưu trữ trong biến máy chủ trong PHP, tôi tin rằng đó là $_SERVER['REQUEST_URI']
. Tất nhiên bạn cũng có thể chuyển một biến số $_GET[]
sang PHP có chứa địa chỉ RESTful.
.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 (và nhiều API khác) sử dụng điều này bởi vì nó là một cách thuận tiện để cung cấp định dạng mà ứng dụng mong đợi từ API. Tất cả các yêu cầu API được định tuyến lại tới một tệp PHP duy nhất xử lý việc tạo tất cả các tệp và lặp lại nội dung của chúng tới đầu ra. Các tập tin là không bao giờ thực sự được lưu trữ trên máy chủ (trừ khi nó được lưu trữ).
Tài Tốt
Một lưu ý o n RecessPHP. Nó chắc chắn là một công cụ tuyệt vời và tôi sẽ khuyến khích bạn xem xét nó (có thể ở nguồn của nó để có được một ý tưởng về cách nó xử lý mọi thứ), nhưng điều đó nói rằng, nó có vẻ hơi clunky với tôi. Thực tế là tên đường dẫn được viết trong các nhận xét đặc biệt có vẻ rất không phải PHP đối với tôi. Tôi sẽ đi lạc khỏi điều này, và tôi sẽ không gọi nó là khung hoàn hảo, nhưng nó chắc chắn là một sự khởi đầu. Chúc may mắn!
Nguồn
2011-11-28 05:08:27
Các url sạch sẽ không liên quan gì đến REST apis. Chúng chỉ là một cách hay để tạo các url mà nếu không có các chuỗi truy vấn xấu. Họ thường được thực hiện bằng cách sử dụng mod_rewrite để có các url sạch và nội bộ transmogrify nó trở lại một phiên bản chuỗi truy vấn. –