Reconnaitre le navigateur avec requete REST et JAXRS
Bonjour,
J'ai besoin de développer un service REST pour mon appli qui renvoie un text/plain. J'utilise un plugin incluant JAXRS. Mon service fonctionne soit sous Firefox/Chrome(besoin d'une page html complète) soit sous IE(besoin que de balise) suivant la page que je renvoie.
Mon problème est donc de trouver l'élément équivalent à request.getHeader("user-agent") dans ce plugin.
PS : j'utillise grails mais ca doit être pareil que les autres frameworks pour ce que je cherche.
Ci-dessous ce que je veux obtenir,je cherche à quoi doit être égale la variable IE, :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import javax.ws.rs.GET
import javax.ws.rs.Path
import javax.ws.rs.Produces
import javax.ws.rs.QueryParam;
@Path('/api/test')
class TestResource {
@GET
@Produces('application/xhtml+xml')
String getTestRepresentation(@QueryParam('name') String name) {
// def String browser = request.getHeader("user-agent");
def IE = ?????
if (!IE){
return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">' +
'<head>' +
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' +
'<title>Insérer une image.</title>' +
'</head>' +
'<body>' +
'<div>toto</div><div>toto2</div></body>' +
'</html>'}
else
return '<div>toto</div><div>toto2</div>'
}
} |
PS : je pourrais tester le navigateur côté client, mais ce n'est pas mon souhait.
merci d'avance
REST avec GRAILS sans JAXRS
En fait il y a un moyen beaucoup plus simple avec grails de faire un REST service. Il suffit de créer un controleur et de définir les méthodes GET/POST à l'intérieur comme suit en injectant le code REST comme suit par exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class PagesDiversesController {
def index = {
def titre = "<title>Calendrier</title>" +
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
def html = '<div id="container">toto</div>' +
'<button value="bouton" onclick="retro()"> bouton toto</bouton>'
def link = '<link rel="stylesheet" type="text/css" href="http://monsite/fonts/style.css" />' +
'<script type="text/javascript" src="http://monsite/monjs.js"></script>'
def script = '<script type="text/javascript">' +
'function retro(){alert("myfunction")}</script> '+
switch(request.method){
case "POST":
render "Create\n"
break
case "GET":
render titre +link + html + script
break
case "PUT":
render "Update\n"
break
case "DELETE":
render "Delete\n"
break
}
} |
Puis injecter le code dans une iframe.
S'il y a un modérateur le sujet pourrait être déplacé dans le forum grails svp.