En utilisant Java API for RESTful Web Services (JAX-RS), vous pouvez utiliser l'objet HttpHeaders pour accéder aux en-têtes de demande.
En utilisant un objet HttpHeaders injecté avec l'environnement d'exécution JAX-RS, les informations d'en-tête de requête HTTP sont connues et disponibles pour être modifiées. L'annotation @javax.ws.rs.core.Context indique qu'un objet de contexte est injecté. L'interface javax.ws.rs.core.HttpHeaders est l'interface de l'objet à injecter.
La méthode de ressource utilise les informations des en-têtes HTTP envoyées dans la demande pour déterminer une réponse appropriée.
L'exemple suivant montre une ressource qui retourne un message d'accueil différent en fonction de la valeur de l'en-tête Accept-Language.
import java.util.List;
import java.util.Locale;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
@Path("/contexttest")
public class HelloWorldInMyLanguage {
/**
* @return Retourne la chaîne dans la langue préférée.
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getGreeting(@Context HttpHeaders httpHeaders) {
List<Locale> locales = httpHeaders.getAcceptableLanguages();
if (locales.size() == 0) {
return "Hello!";
}
Locale locale = locales.get(0);
if (locale.equals(Locale.FRENCH)) {
return "Bonjour!";
} else if (locale.equals(Locale.GERMAN)) {
return "Guten Tag!";
} else {
return "Hello!";
}
}
}
import java.util.List;
import java.util.Locale;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
@Path("/contexttest")
public class HelloWorldInMyLanguage {
@Context
HttpHeaders httpHeaders;
/**
* @return Retourne la chaîne dans la langue préférée.
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getGreeting() {
List<Locale> locales = httpHeaders.getAcceptableLanguages();
if (locales.size() == 0) {
return "Hello!";
}
Locale locale = locales.get(0);
if (locale.equals(Locale.FRENCH)) {
return "Bonjour!";
} else if (locale.equals(Locale.GERMAN)) {
return "Guten Tag!";
} else {
return "Hello!";
}
}
}
