Pourquoi utiliser JAX-RS / Jersey?

Désolé, cette question semble idiote, mais après avoir développé certains de mes services RESTful avec Jersey, je me suis posé la question: si REST est juste une architecture et non un protocole comme SOAP, pourquoi avons-nous besoin d’une spécification comme JAX-RS?

En fait, j’ai googlé des questions comme “Quelle est la différence entre les servlets et les services RESTful sur HTTP” et pour résumer les réponses de la communauté, j’ai eu:

  1. Le développement de services RESTful (sur Jersey) est une architecture qui utilise insortingnsèquement des servlets.
  2. Les outils compatibles JAX-RS, tels que Jersey, facilitent la mise en forme et la suppression des données XML / JSON, aidant ainsi les développeurs.
  3. REST nous aide à utiliser GET / POST / PUT / DELETE de manière très efficace par rapport aux servlets normaux.

D’après ces réponses, je suppose que si j’écris un servlet utilisant JAXB (pour gérer la sérialisation automatique) et que j’utilise efficacement GET / POST / PUT / DELETE dans mon code de servlet, je n’utilise pas un outil comme Jersey. d’où JAX-RS.

Je sais que je me trompe terriblement en passant cette déclaration, corrigez-moi s’il vous plaît.

PS: Ce doute est apparu lorsque j’ai dû développer des services RESTful en PHP. Après avoir parcouru certains des codes PHP RESTful, j’ai réalisé qu’ils ne sont que les mêmes vieux scripts PHP, avec quelques méthodes d’assistance pour gérer XML / JSON.

    Pourquoi utiliser JAX-RS / Jersey?

    Réponse courte

    Parce qu’en facilitant le développement des services RESTful.

    Longue réponse

    JAX-RS est un standard qui facilite la création d’un service RESTful pouvant être déployé sur n’importe quel serveur d’applications Java: GlassFish, WebLogic, WebSphere, JBoss, etc.

    JAX-RS fait partie de Java EE, et lorsque JAX-RS est utilisé avec d’autres technologies Java EE, il devient encore plus facile de créer votre service RESTful:

    • EJB – Un bean session est utilisé comme implémentation du service et gère également la sémantique des transactions.
    • JAX-RS – Utilisé pour exposer le bean session en tant que service RESTful
    • JPA – Utilisé pour conserver les POJO dans la firebase database. Notez comment le EntityManager est injecté dans le bean session.
    • JAXB – Utilisé pour convertir le POJO en / depuis XML (dans GlassFish, il peut également être utilisé pour convertir le POJO en / depuis JSON). JAX-RS gère par défaut l’interaction avec l’implémentation JAXB.

    Exemple de service JAX-RS

    package org.example; import java.util.List; import javax.ejb.*; import javax.persistence.*; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; @Stateless @LocalBean @Path("/customers") public class CustomerService { @PersistenceContext(unitName="CustomerService", type=PersistenceContextType.TRANSACTION) EntityManager entityManager; @POST @Consumes(MediaType.APPLICATION_XML) public void create(Customer customer) { entityManager.persist(customer); } @GET @Produces(MediaType.APPLICATION_XML) @Path("{id}") public Customer read(@PathParam("id") long id) { return entityManager.find(Customer.class, id); } @PUT @Consumes(MediaType.APPLICATION_XML) public void update(Customer customer) { entityManager.merge(customer); } @DELETE @Path("{id}") public void delete(@PathParam("id") long id) { Customer customer = read(id); if(null != customer) { entityManager.remove(customer); } } @GET @Produces(MediaType.APPLICATION_XML) @Path("findCustomersByCity/{city}") public List findCustomersByCity(@PathParam("city") Ssortingng city) { Query query = entityManager.createNamedQuery("findCustomersByCity"); query.setParameter("city", city); return query.getResultList(); } } 

    Pour plus d’informations:

    REST est une architecture qui utilise insortingnsèquement des servlets.

    Non, ce n’est pas REST est un style d’architecture qui peut être implémenté à l’aide de servlets, mais qui ne les utilise pas de manière inhérente, ni n’a de lien avec Java.

    JAX-RS est une spécification JSR définissant une API Java pour les services Web RESTful.

    Jersey est une implémentation spécifique de JAX-RS.

    En ce qui concerne l’utilisation de Jersey ou la conformité à la spécification JAX-RS, c’est à vous de décider. Si cela rend votre travail plus facile, génial! Si personne ne vous force.