Je viens de commencer à utiliser Jersey pour créer une API RESTful pour mon site. C'est un changement merveilleux d'avoir à rouler mon propre support pour les services RESTful en Java. Une chose que je n'arrive tout simplement pas à comprendre est comment "simuler" une méthode DELETE et PUT.Quelle est la meilleure façon de "fausser" les méthodes DELETE et PUT en utilisant JAX-RS?
Jersey prend en charge les annotations @PUT et @DELETE, mais de nombreux Load-Balancers ne permettent pas ces méthodes. Dans le passé, je me suis basé sur la possibilité de définir un en-tête HTTP personnalisé (par exemple x-method-override: DELETE) et "tunneling" dans une requête POST.
Est-ce que quelqu'un a trouvé un moyen de lier une méthode en utilisant les annotations Jersey/JAX-RS aux en-têtes personnalisés? Sinon, existe-t-il un meilleur moyen de contourner le manque de support pour PUT et DELETE?
Salut. D'abord une petite chose: la méthode delete s'appelle 'retrieve'. Ne serait-il pas préférable d'utiliser POST au lieu de GET pour un faux DELETE puisque la requête GET doit toujours être sûre. Autre chose: est-il possible d'utiliser de fausses suppressions et mises à l'intérieur de formulaires HTML? Il n'y a aucun moyen d'ajouter l'en-tête x-method-override. La seule chose possible est un champ '_method' caché dans le formulaire. –
Points forts. Je n'ai vraiment pas trouvé de meilleure solution à ce stade. Les éléments de formulaire masqués sont très limités, car de nombreux messages contiennent des paramètres de formulaire XML ou codés. Cela dit, la plupart de mes services RESTful sont invoqués via XMLHTTPRequest (ou indirectement via des frameworks comme JQuery). La configuration des en-têtes est donc très simple et toujours possible. Pour cette raison principalement je reste avec ma solution. – ra9r