Rest service call

di il
16 risposte

Rest service call

Ciao a Tutti,

In javascript come si fa a richiamare il mio servizio rest service? visto che ho realizzato in java.
Non c'è abbastanza documentazione in internet, non ho travato una spiegazione fatto bene


grazie

16 Risposte

  • Re: Rest service call

    Questa è la mia classe:
    
    @Path("/messaggio") // PRIMO percorso nell'URL
    public class RestJerseyMessage {
    @GET
    	@Produces(MediaType.APPLICATION_JSON) // trasforma in json
    	public Response getPersona() {
    		System.out.println("chiama L'oggetto Persona in json..");
    		
    		Persona persona = new Persona();
    		persona.setNome("Luca");
    		persona.setCognome("negativo");
    		
    		return Response.ok().entity(persona).build(); //costruisci la risposta  trasforma in json
    	}
    }
    
    
    In javascript devo chiamare il mio metodo che è un rest service.
  • Re: Rest service call

    Questo è la mia pagina html:
    
    <!DOCTYPE html>
    <html>
    <head>
    <script src="/WebServiceRestFull/js/service.js"></script>
    <meta charset="ISO-8859-1">
    <title>Rest Service</title>
    </head>
    <body>
    	
    	Testo restituito dal Rest:
    	<textarea rows="4" cols="50" id="idTextArea"></textarea>
    	<input type="submit" value="chiama il servizio Rest" id="idButton" onchange="richiamaServizio()" />
    
    </body>
    </html>
    
    Il compito è di chiamare il servizio rest con javascript cliccando su button mi deve restituire il servizio dei dati nella textarea.
  • Re: Rest service call

    Che la documentazione su Internet sia claudicante e' un fatto assodato.
    Ed infatto NON SI STUDIA spulciando su Internet, MA SUI LIBRI.

    A parte questo, di documentazione su come chiamare un servizio REST da Javascript c'e' ne' a tonnellate.
    Ad esempio con ".ajax" di jQuery:
    
    $(document).ready(function() {
        $.ajax({
            url: "http://rest-service.guides.spring.io/greeting"
        }).then(function(data) {
           $('.greeting-id').append(data.id);
           $('.greeting-content').append(data.content);
        });
    });
    
  • Re: Rest service call

    Ok.
    Ma in javascript come si fa???
    mi puoi dare qualche link, dove spiega meglio il concetto??

    chiamare il metodo del rest service?
  • Re: Rest service call

    Ho trovato questa documentazione:
    
    var xhttp = new XMLHttpRequest();
        xhttp.open("GET", "http://localhost:8900/WebServiceRestFull/messaggio", true);
        xhttp.setRequestHeader("Content-type", "application/json");
        xhttp.send();
        var response = JSON.parse(xhttp.responseText);
    
    Però quando avvio tomcat, non va direttamente nella mia pagina index.html
  • Re: Rest service call

    robot ha scritto:


    Ma in javascript come si fa???
    Quello che ti ha mostrato @migliorabile E' Javascript. Solo che usa "a fondo" JQuery.

    robot ha scritto:


    mi puoi dare qualche link, dove spiega meglio il concetto??
    Guide e reference su JQuery ne trovi a vagonate.

    robot ha scritto:


    Ho trovato questa documentazione:
    
    var xhttp = new XMLHttpRequest();
        xhttp.open("GET", "http://localhost:8900/WebServiceRestFull/messaggio", true);
        xhttp.setRequestHeader("Content-type", "application/json");
        xhttp.send();
        var response = JSON.parse(xhttp.responseText);
    
    Questo è il modo a "basso" livello usando direttamente l'oggetto XMLHttpRequest, senza alcun framework o libreria. E te lo sconsiglio, a meno che puoi fissare/imporre quali browser intendi supportare.
  • Re: Rest service call

    Questo è solo l'inizio, per capire il funzionamento di questo codice.
    la pagina l'ho realizzato in jsp, ma vorrei capire questo codice che ho messo manca qualcosa???
    per comunicare con il mio metodo rest?
    che cosa bisogna aggiungere in javascript per far capire di utlizzare il mio metodo rest?
  • Re: Rest service call

    robot ha scritto:


    che cosa bisogna aggiungere in javascript per far capire di utlizzare il mio metodo rest?
    Ti conviene leggere qualcosa riguardo JQuery, altrimenti non ne esci.... Nel frattempo vedo di scriverti un esempio super-basilare (con JQuery).
  • Re: Rest service call

    Grazie.
    se possibile con un esempio completo con i rest fatto in java e richiamati in javascript.
  • Re: Rest service call

    robot ha scritto:


    se possibile con un esempio completo con i rest fatto in java e richiamati in javascript.
    Non importa (molto) la parte Java, purché la response sia JSON.

    Prova questo che ho scritto, prendi il seguente codice e mettilo in un file locale es. prova.html e poi aprilo con Firefox o Chrome (non ho provato con altri browser):
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Prova</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>
    function richiediTempo() {
        $.ajax({
            url: "http://date.jsontest.com"
        }).done(function(data) {
            var str = data.date + " " + data.time;
            $("#risultati").append($("<p>").text(str));
        });
    }
    
    $(function() {
        $("#pulsante").click(richiediTempo);
    });
    </script>
    </head>
    <body>
    
    <input id="pulsante" type="button" value="Leggi tempo">
    
    <div id="risultati"></div>
    
    </body>
    </html>
    Prova innanzitutto con un'altra finestra del browser a chiedere direttamente tu a mano l'url http://date.jsontest.co
    Vedrai che quel servizio ti fornisce un piccolo JSON con 3 field.

    Nel mio esempio:
    1) Ho preso JQuery da una CDN, la prima che ho trovato. Ce ne sono anche altre e se vuoi puoi scaricare JQuery per "servirlo" tu dalla tua applicazione, se vuoi.

    2) All'evento di ready, viene eseguito

    $("#pulsante").click(richiediTempo);

    Questo semplicemente aggancia l'evento di click del pulsante alla funzione richiediTempo.

    3) Quando fai click sul pulsante, viene eseguita la funzione richiediTempo, essa fa la chiamata asincrona verso quel url e siccome la response è JSON, ottengo i dati "parsati" nella variabile data.
    Creo la stringa con la data, poi creo un nuovo paragrafo <p> lo riempio con la stringa e poi "appendo" il paragrafo al fondo del <div>.
    Prova il pulsante più volte in più secondi diversi, vedrai comparire i paragrafi con la data aggiornata. Nota che la pagina NON viene ricaricata. Questo è appunto il succo delle chiamate fatte con tecniche "AJAX".


    P.S. non sono praticissimo di JQuery, spero di non aver usato qualcosa di inappropriato o obsoleto.
  • Re: Rest service call

    Grazie.

    Ti vorrei chiedere un ultima cosa.
    E' possibile fare il Vostro esempio, in base alle mie esigenze?
    in javascript...
  • Re: Rest service call

    robot ha scritto:


    E' possibile fare il Vostro esempio, in base alle mie esigenze?
    in javascript...
    Ma se hai capito il concetto e funzionamento del mio esempio .... non dovrebbe essere affatto difficile adattarlo al tuo scenario.
    Quali sono i dubbi?
  • Re: Rest service call

    Il primo dubbio quando avvio il progetto da Apache non mi carica la pagina index.jsp visto che l'ho creato nel web content. Mi da errore 404 in JavaScript la pagina index non è inserito ma soltanto URL.
    Ho bisogno qualche altro esempio simile al mio, che in realtà non ho capito
  • Re: Rest service call

    robot ha scritto:


    Il primo dubbio quando avvio il progetto da Apache non mi carica la pagina index.jsp visto che l'ho creato nel web content. Mi da errore 404 in JavaScript la pagina index non è inserito ma soltanto URL.
    Si è capito poco ..... inizia a precisare se usi un IDE, quale e che tipo di progetto hai creato.

    robot ha scritto:


    Ho bisogno qualche altro esempio simile al mio, che in realtà non ho capito
    Non ho altri esempi da mostrarti al momento. Quello che ti ho fatto oggi pomeriggio è comunque significativo se vuoi avere una idea di come fare chiamate AJAX.
Devi accedere o registrarti per scrivere nel forum
16 risposte