2016-05-18 32 views
5

Sono nuovo per Laravel e per Lumen. Voglio assicurarmi che ricevo sempre solo un oggetto JSON come output. Come posso farlo in Lumen?Laravel Lumen Garantire la risposta JSON

È possibile ottenere una risposta JSON utilizzando response()->json($response);. Ma quando si verifica un errore, API mi dà errori text/html. Ma voglio solo le risposte application/json.

Grazie in anticipo.

risposta

16

È necessario regolare il gestore di eccezioni (app/Exceptions/Handler.php) per restituire la risposta desiderata.

Questo è un esempio molto semplice di ciò che può essere fatto.

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

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

Grazie per la risposta. Ho una piccola domanda, posso farlo? 'return response() -> json (['code' => $ rendered-> getStatusCode(), 'message' => $ e-> getMessage()], $ rendered-> getStatusCode());' Ho cercato elenco di eccezioni e non è stato ancora trovato un elenco. –

+0

Mi sembra a posto. Ecco la firma per la funzione 'response() -> json()'. https://github.com/laravel/lumen-framework/blob/5.2/src/Http/ResponseFactory.php#L35 – Wader