51 votes

Servlet vs RESTful

Aujourd'hui, j'ai lu sur les services reposants. Fondamentalement, ce que je comprends, c'est que les services Web Restful fonctionneront sur les méthodes de demande HTTP plutôt que le service Web normal fonctionnera sur la demande SOAP.

Quel est le besoin de services Restful car un servlet normal peut également fonctionner sur les méthodes HTTP?

71voto

BalusC Points 498232

Réparateur est plus un moyen d'obtenir de l'information par l'auto-documenter les chemins d'URL au lieu de par les paramètres de la demande. JAX-RS est juste un moyen pratique et auto-contenant de l'API qui supprime le besoin d'écrire tout le code réutilisable-vous de recueillir les paramètres et la génération de la réponse souhaitée, résultant en minimes et plus l'auto-documentation du code.

En supposant que vous avez un JAXB Javabean qui ressemblent à:

@XmlRootElement
public class Data {

    @XmlElement
    private Long id;

    @XmlElement
    private String value;

    // ...

    @Override
    public String toString() {
        return String.format("Data[id=%d,value=%s]", id, value);
    }

}

Et JAX-RS ressource de ce genre:

@Path("data")
public class DataResource {

    @EJB
    private DataService service;

    @GET 
    @Path("text/{id}")
    @Produces(MediaType.TEXT_PLAIN)
    public String getAsText(@PathParam("id") Long id) {
        return String.valueOf(service.find(id));
    }

    @GET 
    @Path("xml/{id}")
    @Produces(MediaType.APPLICATION_XML)
    public Data getAsXml(@PathParam("id") Long id) {
        return service.find(id);
    }

    @GET 
    @Path("json/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public Data getAsJson(@PathParam("id") Long id) {
        return service.find(id);
    }

}

Alors vous l'avais déjà obtenir le contenu souhaité dans le format approprié par:

C'est tout. Essayez de faire la même chose avec une seule plaine de vanille Servlet :) Veuillez noter que le SAVON essentiellement aussi va sur HTTP. C'est en fait un supplément de XML couche sur HTTP, pas de protocole de réseau différents.

Voir aussi:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X