web-dev-qa-db-fra.com

Méthode de rendu du contrôleur Grails rendre vs répondre

Je viens de réaliser que pour un contrôleur Grails, il existe une autre méthode de rendu "respond".

Quelle est la différence entre la méthode respond et render si nous voulons rendre une vue dans le contrôleur.

29
ttt

La méthode de réponse utilise la négociation de contenu pour répondre avec le type de contenu le plus approprié en fonction de l'en-tête "ACCEPT" des demandes.

Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8, application/json

De cette façon, le consommateur de votre site peut choisir comment il souhaite que les données lui soient retournées. Ce n'est peut-être pas la meilleure option si vous souhaitez forcer un type de retour spécifique. Par exemple: vous créez une api REST et ne souhaitez renvoyer que json ou xml, si l'utilisateur demande test.html, il se peut qu'il vous renvoie vos données dans un format que vous ne souhaitez pas Sinon, répondre peut être un moyen facile de prendre en charge plusieurs formats de retour sans les programmer chacun séparément.

Render définit explicitement le format dans lequel vous souhaitez renvoyer vos données:

(Exemples de documentation)

render Book.list(params) as JSON
render Book.get(params.id) as XML

// render with status code
render(status: 503, text: 'Failed to update book ${b.id}')

Plus d'information:

Répondre: http://grails.org/doc/latest/ref/Controllers/respond.html Rendre: http://grails.org/doc/latest/ref/Controllers/ render.html

35
vesuvious