XHotSniperX
Lt. Junior Grade
- Registriert
- Jan. 2008
- Beiträge
- 472
Hallo Leute
ich möchte auf meiner Seite REST implementieren. Ich hab bis heute nichts von REST gehört aber jetzt hab ich es kurz versucht auf meiner Testseite zu implementieren.
Ich habe diese Seite dabei angeschaut und wollte das einfach mal probieren. http://net.tutsplus.com/tutorials/other/a-beginners-introduction-to-http-and-rest/
Auf meiner Testseite möchte ich nun das Besipiel von dem Tutorial testen. Ich habe dazu einen Ordner "clients" erstellt und die server.php Datei und eine .htaccess Datei reinkopiert.
Wenn ich nun http://fahrschule.taess.net/clients/ aufrufe, dann kommt leider kein json raus. Wisst ihr wieso das nicht klappt?
Hier die zwei files im Ordner clients:
.htaccess:
ich möchte auf meiner Seite REST implementieren. Ich hab bis heute nichts von REST gehört aber jetzt hab ich es kurz versucht auf meiner Testseite zu implementieren.
Ich habe diese Seite dabei angeschaut und wollte das einfach mal probieren. http://net.tutsplus.com/tutorials/other/a-beginners-introduction-to-http-and-rest/
Auf meiner Testseite möchte ich nun das Besipiel von dem Tutorial testen. Ich habe dazu einen Ordner "clients" erstellt und die server.php Datei und eine .htaccess Datei reinkopiert.
Wenn ich nun http://fahrschule.taess.net/clients/ aufrufe, dann kommt leider kein json raus. Wisst ihr wieso das nicht klappt?
Hier die zwei files im Ordner clients:
PHP:
<?php
/*
Copyright 2010 Ludovico Fischer. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
class Server {
/* The array key works as id and is used in the URL
to identify the resource.
*/
private $contacts = array('jim' => array('address' => '356 Trailer Park Avenue', 'url' => '/clients/jim'),
'anne' => array('address' => '6321 Tycoon Road', 'url'=> '/clients/anne')
);
public function serve() {
$uri = $_SERVER['REQUEST_URI'];
$method = $_SERVER['REQUEST_METHOD'];
$paths = explode('/', $this->paths($uri));
array_shift($paths); // Hack; get rid of initials empty string
$resource = array_shift($paths);
if ($resource == 'clients') {
$name = array_shift($paths);
if (empty($name)) {
$this->handle_base($method);
} else {
$this->handle_name($method, $name);
}
} else {
// We only handle resources under 'clients'
header('HTTP/1.1 404 Not Found');
}
}
private function handle_base($method) {
switch($method) {
case 'GET':
$this->result();
break;
default:
header('HTTP/1.1 405 Method Not Allowed');
header('Allow: GET');
break;
}
}
private function handle_name($method, $name) {
switch($method) {
case 'PUT':
$this->create_contact($name);
break;
case 'DELETE':
$this->delete_contact($name);
break;
case 'GET':
$this->display_contact($name);
break;
default:
header('HTTP/1.1 405 Method Not Allowed');
header('Allow: GET, PUT, DELETE');
break;
}
}
private function create_contact($name){
if (isset($this->contacts[$name])) {
header('HTTP/1.1 409 Conflict');
return;
}
/* PUT requests need to be handled
* by reading from standard input.
*/
$data = json_decode(file_get_contents('php://input'));
if (is_null($data)) {
header('HTTP/1.1 400 Bad Request');
$this->result();
return;
}
$this->contacts[$name] = $data;
$this->result();
}
private function delete_contact($name) {
if (isset($this->contacts[$name])) {
unset($this->contacts[$name]);
$this->result();
} else {
header('HTTP/1.1 404 Not Found');
}
}
private function display_contact($name) {
if (array_key_exists($name, $this->contacts)) {
echo json_encode($this->contacts[$name]);
} else {
header('HTTP/1.1 404 Not Found');
}
}
private function paths($url) {
$uri = parse_url($url);
return $uri['path'];
}
/**
* Displays a list of all contacts.
*/
private function result() {
header('Content-type: application/json');
echo json_encode($this->contacts);
}
}
$server = new Server;
$server->serve();
?>
.htaccess:
Code:
RewriteEngine on
RewriteRule ^/.* /server.php