web-dev-qa-db-fra.com

Jersey - Rediriger après POST vers une URL externe

J'utilise Jersey pour créer REST. J'en ai une POST et en réponse à cette méthode, l'utilisateur doit être redirigé vers une URL personnalisée comme http://example.com qui ne doit pas nécessairement être lié à l'API.

Je regardais ici d'autres questions similaires sur ce sujet, mais je n'ai rien trouvé que je puisse utiliser.

20
Vuk Stanković

Je suggère de modifier la signature de la méthode annotée JAX-RS pour renvoyer un javax.ws.rs.core.Response objet. Selon que vous souhaitez que la redirection soit permanente ou temporaire (c'est-à-dire si le client doit mettre à jour ses références internes pour refléter la nouvelle adresse ou non), la méthode doit générer et renvoyer un Response correspondant à un HTTP-301 (redirection permanente) ou HTTP-302 (redirection temporaire) code d'état.

Voici une description dans la documentation de Jersey concernant la façon de retourner des réponses HTTP personnalisées: https://jersey.Java.net/documentation/latest/representations.html#d0e5151 . Je n'ai pas testé l'extrait de code suivant, mais j'imagine que le code ressemblerait à quelque chose comme ceci, pour HTTP-301:

@POST
public Response yourAPIMethod() {
    URI targetURIForRedirection = ...;
    return Response.seeOther(targetURIForRedirection).build();
}

... ou ceci, pour HTTP-302:

@POST
public Response yourAPIMethod() {
    URI targetURIForRedirection = ...;
    return Response.temporaryRedirect(targetURIForRedirection).build();
}
33
sumitsu