2012-06-12 5 views
12

Wie der Titel sagt, benutze ich Codeigniter mit phil Störg - codeigniter-restserver-Framework.So senden Sie eine DELETE-Anfrage an phil sturgeon - codeigniter-restserver

Ich habe das Tutorial auf Nettus gefolgt und alles funktioniert gut, außer beim Senden einer DELETE-Anfrage.

Code:

<?php 
require(APPPATH.'libraries/REST_Controller.php'); 

class Client extends REST_Controller{ 

function user_get() 
{ 
    $data = array('returned:'=> $this->get('id')); 
    $this->response($data); 
} 

function user_post() 
{ 
    $data = array('returned:'=> $this->post('id')); 
    $this->response($data); 
} 

function user_put() 
{ 
    $data = array('returned:'=> $this->put('id')); 
    $this->response($data); 
} 

function user_delete() 
{ 
    $data = array('returned from delete:'=> $this->delete('id')); 
    $this->response($data); 
} 
} 

Ich verwende ein FF Addon HTTP Ressourcen Test, genannt die Anfrage zu senden, aber wenn ich eine DELETE-Anfrage mit dieser URL senden: http://localhost/api/client/user/id/1, erhalte ich { "kehrte aus löschen: „: false}

als Randbemerkung: ich habe diesen post gefunden und mit Hilfe des‚X-HTTP-Methode-Aufschalten‘Header und als Post-Anforderung zu senden ich in der Lage war, die ID zu bekommen, aber ich preffer ein Weg, wo der Client diesen Header nicht hinzufügen muss.

+4

+1 für den Titel – fire

+0

Dank für das Bemerken‚Wie Anfrage mit phil Stör senden DELETE‘, werde ich sicher sein, um es zu bearbeiten :) – Tomer

+0

Schauen Sie sich diesen Gist an: gist.github.com/Ema4rl/aebb63db1c76786c9cba811d69339fd3 – Ema4rl

Antwort

13

Entsprechend der HTTP-Spezifikation kann DELETE keine Parameter senden. Es kann Dinge in der URL, so dass Sie könnte dies ändern:

public function user_delete($id) 
{ 
    $this->response(array(
     'returned from delete:' => $id, 
    )); 
} 
+0

Danke Phil, tolle FW übrigens :) Also denke ich, dass das Tutorial auf Nettuts nicht aktualisiert wird, da der Code von dort ist.Auch die URL sollte sein: http : // localhost/api/client/user/1 (entferne das/id /) – Tomer

+0

nur ein kommentar, aber solltest du nicht eher "localhost/api/client/user/delete/1" oder so etwas verwenden? – gorelative

+1

ftom2: Das Internet ist ein Archiv, nicht jeder Artikel wird für immer gepflegt und ich könnte das nicht tun, wenn ich das wollte –

0

ich mir eine diese Arbeit für

1 hatte das gleiche Problem -> in REST_Controller.php den Standard _parse_delete ersetzen () Funktion von:

protected function _parse_delete() 
{ 
    $this->_delete_args = $_DELETE; 
    $this->request->format and $this->request->body = file_get_contents('php://input'); 
    // Set up out DELETE variables (which shouldn't really exist, but sssh!) 
    parse_str(file_get_contents('php://input'), $this->_delete_args); 
} 

Das ist alles! keine Notwendigkeit mehr von "user_delete ($ id)‚‘

+0

Sehen Sie sich diesen Artikel an: gist.github.com/Ema4rl/aebb63db1c76786c9cba811d69339fd3 – Ema4rl

Verwandte Themen