2016-05-18 9 views
5

Ich bin neu in Laravel und Lumen. Ich möchte sicherstellen, dass ich immer nur ein JSON-Objekt als Ausgabe bekomme. Wie kann ich das in Lumen machen?Laravel Lumen Stellen Sie sicher, JSON Antwort

Ich kann eine JSON-Antwort mit response()->json($response); erhalten. Aber wenn ein Fehler auftritt, gibt mir API text/html Fehler. Aber ich möchte nur application/json Antworten.

Vielen Dank im Voraus.

Antwort

16

Sie müssen Ihren Ausnahmebehandler anpassen (app/Exceptions/Handler.php), um die gewünschte Antwort zurückzugeben.

Dies ist ein sehr einfaches Beispiel dafür, was getan werden kann.

public function render($request, Exception $e) 
{ 
    $rendered = parent::render($request, $e); 

    return response()->json([ 
     'error' => [ 
      'code' => $rendered->getStatusCode(), 
      'message' => $e->getMessage(), 
     ] 
    ]); 
} 
+0

Danke für die Antwort. Ich habe allerdings eine kleine Frage: Kann ich das tun? 'return response() -> json (['code' => $ gerendert-> getStatusCode(), 'message' => $ e-> getMessage()], $ gerendert-> getStatusCode());' Ich habe gesucht Liste der Ausnahmen und konnte noch keine Liste finden. –

+0

Das sieht gut aus für mich. Hier ist die Signatur für die Funktion 'response() -> json() '. https://github.com/laravel/lumen-framework/blob/5.2/src/Http/ResponseFactory.php#L35 – Wader