Comment produire des erreurs de l'API réponses dans Laravel 5.4?

Chaque fois que je fais un appel à /api/v1/posts/1, l'appel est transféré à la show méthode

public function show(Post $post) {
    return $post;
}

dans PostController.php ingénieux contrôleur. Si le poste n'existe pas, le serveur renvoie une réponse JSON. Toutefois, si le post ne pas existe pas, le serveur renvoie HTML, en dépit de la demande clairement attend JSON en retour. Voici une démonstration avec le Facteur.

Comment produire des erreurs de l'API réponses dans Laravel 5.4?

Le problème est qu'une API est censé renvoyer application/json, pas text/html. Donc, voici mes questions:

1. Ne Laravel la prise en charge intégrée pour automatiquement retour JSON si des exceptions se produisent lorsque nous utilisons implicite modèle de feuille de route de liaison (comme dans show méthode ci-dessus, lorsque nous avons 404)?

2. Si oui, comment puis-je l'activer? (par défaut, je reçois HTML, pas de JSON)

Si ce n'est pas quelle est l'alternative à la réplication de l'suivantes à travers chaque API contrôleur

public function show($id) {
    $post = Post::find($id); //findOrFail() won't return JSON, only plain HTML
    if (!$post)
        return response()->json([ ... ], 404);
    return $post;
}

3. Est-il un générique de l'approche à utiliser dans app\Exceptions\Handler?

4. Ce n'est un standard d'erreur/exception réponse contenir? J'ai googlé mais trouvé coutume beaucoup de variations.

5. Et pourquoi n'est-elle pas la réponse JSON encore intégré dans implicite route de la liaison de modèle? Pourquoi ne pas simplifier les devs de la vie et de la poignée de cette baisse de niveau de tapage automatiquement?

MODIFIER

Je suis parti avec une énigme après les gens de chez Laravel IRC m'a conseillé de quitter l'erreur réponses seulement, en faisant valoir que HTTP standard exceptions sont rendus au format HTML par défaut, et le système qui consomme de l'API doit gérer une erreur 404 sans regarder le corps. J'espère que plus de gens vont se joindre à la discussion, et je me demande comment vous allez y répondre.

InformationsquelleAutor Alex | 2017-04-06