2016-03-23 2 views
1

Ich schreibe und API und ich werfen und Ausnahme, die eine Methode aufruft, um die Kopfzeile zu komponieren. Wenn es nicht Inhalt ist werfe ich eine Ausnahme mit einer benutzerdefinierten Nachricht und Code 204.PHP-Header zeigt keine benutzerdefinierte Nachricht, wenn der Code 204 ist

throw new Exception("my message", 204); 

Und die Methode, die den Header

if ($status_codes[$code] !== null) { 
    $status_string = $code . ' ' . $status_codes[$code]; 
    header($_SERVER['SERVER_PROTOCOL'] . ' ' . $status_string, true, $code); 

    if ($code != 200) die(json_encode(["code" => $code, "message" => $message])); 

} 

Das Problem komponiert ist, dass wenn ich den Code 204 I Zeige nur den Status der Antwort, die ein 204 No content ist, aber meine Nachricht mit dem Code wird nicht angezeigt. Ich habe versucht mit dem Code 400 und es zeigt die benutzerdefinierte Nachricht.

Antwort

1

Die 204 Antwort darf KEINEN Nachrichtentext enthalten und wird daher immer durch die erste leere Zeile nach den Headerfeldern beendet.

RFC 2616

benötigen mehr Worte? :)

+0

Danke für den Link, jetzt verstehe ich es. Kann ich dann einen anderen Code verwenden, der für die Rückgabe einer Nachricht geeignet ist, wenn keine Daten von der Datenbank gefunden werden? – abaracedo

+1

Das ist richtig, Sie können. Wenn Sie jedoch bei 204 bleiben, dann weiß jeder konforme API-Client, dass er keine Textnachricht erwartet, also ist das auch in Ordnung. –

+0

Okey, nochmals vielen Dank. – abaracedo

Verwandte Themen