Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-10-2009 16:39:39

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

REST, HTTP response code et redirection

Bonjour,

Je suis en dev. depuis quelques temps sur une application conséquente dans laquelle j'implémente une API RESTful.

Une partie du front fait appel à l'API via Ajax et je me demande quelle est la meilleur façon d'effectuer une redirection après un succès sur une requête POST via Ajax.

Dans un controlleur je procède (en gros) ainsi:

Code:

public function init()
{
    parent::init();
    
    $context = $this->_helper->getHelper('ContextSwitch');
    $context->addActionContext('post', 'json');
    $context->addActionContext('put', 'json');
    $context->addActionContext('delete', 'json');
    $context->initContext();
    
    if (false === $this->_request->isXmlHttpRequest()) {           
        $this->_redirector = $this->_helper->getHelper('redirector');   
        $this->_redirector->setUseAbsoluteUri();
    }
}

// ...

Code:

// ... postAction()
if ($input->hasInvalid() || $input->hasMissing()) {
    $errors = $input->getMessages();            
            
    if ($this->_request->isXmlHttpRequest()) { 
        // 400 (Bad Request) - echec validation formulaire 
        $this->_response->setHttpResponseCode(400);
        $this->view->errors = $errors;
    }
    else {
        // ... message d'erreurs à placer dans flash messenger
        return $this->_redirector->gotoUrl('ma-ressource/new');
    }        
}
else {
    // traitement....
    
    if ($this->_request->isXmlHttpRequest()) {
        // 201 (Created) - traitement ok
        $this->_response->setHttpResponseCode(201);
        $this->view->redirect = $this->view->serverUrl() . $this->view->baseUrl() . "/ma-ressource/$id";
    }
    else {
        return $this->_redirector->gotoUrl("/ma-ressource/$id");
    }
}

Et côté JS, je test sur un success si j'ai un redirect et si oui je redirige par un top.location.

Je sais pas mais je ne suis pas satisfait par cette méthode, comment faites-vous ?

Merci,
A+ benjamin.

Dernière modification par Delprog (24-10-2009 17:57:37)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages