2016-05-04 11 views
0

Ich versuche eine vollständige REST API mit Slim 3 zu erstellen. Es war ziemlich einfach mit Slim 2. Aber jetzt habe ich ein paar Probleme.Get POST PUT Parameter mit Slim 3

Die POST und PUT Route funktioniert nicht erwartet hat. Ich kann die Parameter nicht bekommen. Ich fand die $request->getHeaders() auf den Dokumentationen, die funktioniert, aber anstatt zum Beispiel den Parameter length bekommen, bekomme ich HTTP_LENGHT und jeder Parameter hat diese HTTP_ Präfix.

Ich fand diese question aber $request->getParsedBody() geben Sie ein leeres Array für mich zurück.

Ich teste meine API mit Advanced REST Client und dies ist ein Beispiel dafür, was ich als POST-Anfrage senden:

POST /test/barrier HTTP/1.1 
HOST: mydomain.com 
start_lng: 2.6423183977058 
start_lat: 56.865296679535 
type: Something 
comment: testcomment 
due_date: null 
content-type: application/x-www-form-urlencoded 

I Slim 3.3.0 mit bin. Hier

ist ein Beispiel dafür, was ich mit $request->getHeaders():

["HTTP_START_LAT"]=> 
    array(1) { 
    [0]=> 
    string(15) "56.865296679535" 
    } 
    ["HTTP_START_LNG"]=> 
    array(1) { 
    [0]=> 
    string(15) "2.6423183977058" 
    } 

Eine seltsame Sache ist, wenn ich versuche, $request->hasHeader('length'); ich den Wert meiner Parameter zu erhalten, so dass Mittel, den Namen richtig sind. Ich verstehe es wirklich nicht.

Ich möchte nur das Array der Parameter wie $app->request->post() in Slim 2 *. Vielen Dank.

Mein .htaccess ist wie folgt:

RewriteEngine On 

RewriteBase /test 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [QSA,L] 

<files db.config.ini> 
    deny from all 
</files> 
+1

Sie sollten wahrscheinlich die Daten als POST Körper und nicht Überschriften senden. –

+0

@Mika Ja ... Genau ... Ich war mir sicher, dass es sich um einen Fehler im eigentlichen Code handelte und nicht nur um einen menschlichen Fehler, haha. Klassische Art, Zeit zu verlieren. – TDK

Antwort

0

Ok. Mein Fehler, ich habe es in der Test-App falsch verstanden. Ich schrieb alle meine Parameter als Kopfzeilen bilden ein nicht als Datenform ...