IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

status code HTTP personnalisé sur erreur [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut status code HTTP personnalisé sur erreur
    Hello

    Je développe une API REST sur mon site
    Je voudrais que quand une erreur survient, ma méthode ne renvoie rien, seulement un code HTTP d'erreur personnalisé (par ex HTTP 601..)

    Je n'ai aucune idée de comment faire cela dans mon action
    Voila l'action en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class rewardActions extends sfActions
    {
      public function executeList(sfWebRequest $request) {
        $this->rewards = array();
        $i=0;
     
        $rewards = Doctrine_Core::getTable('Reward')->findAll();
     
     
        foreach ($rewards as $reward) { 
          $this->rewards[$i++] = $reward->asArray($request->getHost().$request->getScriptName());      
        }
        $this->getResponse()->setHttpHeader('Content-type', 'application/json');
        $this->getResponse()->setContent(json_encode($this->rewards));
        return sfView::NONE;
      } 
    }
    Dans ce cas, je veux que si $reward->asArray() envoie une exception, le code HTTP renvoyé soit 601 et non "200" comme actuellement (car réponse à la requete "GET")
    Comment faire pour cela ??

    Merci d'avance!

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Il n'y a pas un setStatusCode() ou un setCodeStatus() dans les méthodes de l'objet sfWebResponse ?

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    et bien l'objet "response" est de type sfResponse et pas sfWebResponse non ?
    sur l'objet sfResponse je n'ai pas de "setStatusCode".

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    La méthode fait partie de sfWebReponse.

    Mais je ne sais pas très bien où se situe la limite entre les deux.

    Je pense n'avoir jamais utilisé que le sfWebRéponse...

    REST est un protocole qui utilise le HTTP pour le transport, donc il me semblerait logique de baser la réponse sur le sfWebReponse, non ?

  5. #5
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    Oui effectivement :
    La fonction a utiliser est :
    $this->getResponse()->setStatusCode(XXX,'custom message');

    il faut bien faire attention au sfWebResponse, c'est le premier point :

    - Dans le "factories.yml"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dev:
      mailer:
        param:
          delivery_strategy: none
     
      response:
        class: sfWebResponse
        param:
          send_http_headers: true
    -Et aussi, DESACTIVER LA DEBUG BAR dans le "settings.yml" de l'application !! (car sans ça, vous allez toujours avoir des codes 200, même avec le setStatusCode() ).


  6. #6
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Ton service n'est pas sensé appeler l'application en mode debug. Et en mode normal, la debug barre devrait être désactivée...

  7. #7
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    Effectivement, sauf que sur mon appli, je suis en contexte "dev" et donc avec la barre par défaut ! donc en testant l'API sur le contexte "dev" avec la barre donc, cela ne fonctionnait pas

  8. #8
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    En contexte "dev" dans l'appli ?

    Bon, chacun fait comme il veut, mais je ne pense pas que cela soit courrant.

  9. #9
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    looool en général vaut mieux commencer par le contexte "dev" avant de passer en contexte "test" et ensuite en "prod" non ?

  10. #10
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Je pense que l'on parle de choses différentes.

    Je parle de lancer l'application avec le contrôleur de dev : frontend_dev.php.

    De ce que j'ai compris, tu préfères basculer le mode dev sur toute l'application.

    L'avantage avec le mode dev dans le contrôleur c'est que si tu fais un appel REST sur l'url 'standart' de l'application, elle n'est pas en dev, ce qui est plus simple (a mon avis) pour tester un REST. Tu peux toujours lancer la demande depuis un explorateur en mode dev à l'aide du contrôleur, l'explorateur peut afficher le contenu généré.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel HTTP Status Code ?
    Par Arkante dans le forum Apache
    Réponses: 4
    Dernier message: 03/06/2010, 05h35
  2. Réponses: 6
    Dernier message: 09/09/2008, 17h08
  3. Réponses: 5
    Dernier message: 06/09/2007, 09h49
  4. erreur http 500 sur un servlet
    Par 2tsiris dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 04/05/2006, 09h08
  5. code retour UNIX sur erreur ORA
    Par vinz_07 dans le forum Administration
    Réponses: 7
    Dernier message: 25/08/2004, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo