App:----- object not found by the @ParamConverter annotation.

Résolu/Fermé
malo91 Messages postés 45 Date d'inscription mardi 2 février 2021 Statut Membre Dernière intervention 3 août 2022 - Modifié le 27 juil. 2021 à 16:49
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 4 août 2021 à 19:45
Bonjour, j'ai cherché et malgré en effet les sujets identiques à mon message , la reponse ne semble pas correspondre !
apparemment ca serait un souci de "path" mais je comprends pas trop car le meme chemin fonctionne si je mets un ID existant!

exemple: http://localhost:8000/api/article/show/40
ca va marcher et me donner un code 200 en json car il existe

si je mets 41 qui n'existe pas :
App:Article object not found by the @ParamConverter annotation.

je cree une api
je suis entrain d'ecrire le code pour que mes erreurs apparaissent en Json dans postman.
Donc pour tester j'ai mis dans une url un article inexistant pour avoir mon Json!!
et je ne me retrouve que avec : l'erreur du sujet :(
voici le code de mon controller concerné et la methode show :

(je suis entrain de faire aussi mes annotations pour ma doc)
 /**
     * @Route("/show/{id}", name="show_article", methods={"GET"})
     * @ParamConverter("article", class="App:Article")
     *     @OA\Parameter(name="page", in="query", 
     *     @OA\Schema(type="integer"))
     *     @Cache(expires="+5 minutes")
     *     @OA\Response(
     *         response="200",
     *         description="Returns Article"
     *) 
     */
    public function show(Article $article): Response
    {
        return $this->json($article, Response::HTTP_OK, [
            'groups' => ['show']
        ]);
    }


sachant que ma route principale dans mon controller c'est :
/**


* @Route("/api/article")

* @OA\Tag(name="Article")

*    @OA\Response(

*      response="403",

*      description="FORBIDDEN acces non autorisé",

* )

*      @OA\Response(

*      response="404",

*      description="URI est peut-être incorrect ou la ressource a peut-être été supprimée.",

* )

* 

*/


class ArticleController extends AbstractController
{


je ne vois pas malgré toutes mes recherches depuis hier :(

merci pour votre aide
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
4 août 2021 à 19:45
Bonjour,

Quel est le soucis ?

A priori il n'y a pas de problème, c'est bien le comportement attendu pour l'annotation @ParamConverter : si la requête http ne correspond à aucun article en base de données (/api/article/show/41 dans ton exemple), Symfony retourne alors une erreur 404.
https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html

Symfony affiche le message "object not found by the @ParamConverter annotation" parce que ton application est dans l'environnement de développement (APP_ENV=dev dans le fichier .env).
Dans l'environnement de production, l'application retournera uniquement une erreur 404, ce qui est bien le comportement attendu si aucune ressource ne correspond à l'adresse demandée.
https://symfony.com/doc/current/configuration.html#configuration-environments

Bonne journée,
1