restful webservice con wicket [sc]ful webservice con wicket [sc]

Download RESTful Webservice con wicket [SC]ful webservice con wicket [sc]

If you can't read please download the document

Upload: santi-caltabiano

Post on 07-Aug-2015

22 views

Category:

Internet


1 download

TRANSCRIPT

1. WICKET RESTFUL CON WICKET -------------------------------------------------------------------------------- ---------------------------------------------- DESCRIZIONE E' possibile scrivere webservice di tipo RESTful direttamente in wicket utilizzando la libreria "Wicket-rest-annotations". Si tratta pertanto di una libreria che implementa la specifica JAX-RS. Il protocollo di comunicazione json (http://json.org/json-it.html) -------------------------------------------------------------------------------- ---------------------------------------------- LIBRERIE - wicketstuff-restannotations-6.0.jar - wicketstuff-restannotations-json-6.0 E' possibile scarivarle dal sito ufficiale https://github.com/bitstorm/Wicket- rest-annotations oppure da http://mvnrepository.com/ Dipendenze: - gson-2.2.4.jar Libreria json per java che possibile scaricare da json.org o da http://mvnrepository.com/ -------------------------------------------------------------------------------- ---------------------------------------------- ESEMPIO Supponiamo di volere fornire il servizio di scambio pojo Persona tramite RESTful-json. Per semplificare l'esempio la classe presenta un numero minimo di propriet. Ma possibile utilizzare il numero di propriet desiderate. E' anche possibile utilizzara propriet che fanno riferimento ad altri oggetti o liste. Sar la libreria che in maniera trasperente convertir gli oggetti in rappresentazione json. Ovviamente si presuppone che sia gi presente un progetto wicket. Si fa inoltre osservare che non necessario marcare il pojo con delle annotazioni. STEP 01: creare il bean: package myrest; public class Persona { private String nome; private String cognome; private int eta; public Persona(String nome, String cognome, int eta) { this.nome = nome; this.cognome = cognome; this.eta = eta; } ... metodi get e set 2. } STEP 02: creare la classe per fornire la risorsa: Questa pagina fornisce tre serivizi: 1) Restituisce tutte le anagrafiche (metodo GET) 2) Elimina un'anagrafica (metodo DELETE) 3) Inserisce un'anagrafica (metodo POST) Si fa osservare che sufficiente estendere la classe GsonRestResource (IResource). package myrest; import java.util.ArrayList; import java.util.List; import org.wicketstuff.rest.annotations.MethodMapping; import org.wicketstuff.rest.annotations.parameters.RequestBody; import org.wicketstuff.rest.resource.gson.GsonRestResource; import org.wicketstuff.rest.utils.http.HttpMethod; /** * * @author osanet */ public class PersonsRestResource extends GsonRestResource { private List persone; public PersonsRestResource() { persone = new ArrayList(); persone.add(new Persona("pippo01", "rossi01", 10)); persone.add(new Persona("pippo02", "rossi02", 20)); persone.add(new Persona("pippo03", "rossi03", 30)); } @MethodMapping("/persone") public List getAllPersons() { return persone; } @MethodMapping(value = "/persone/{personIndex}", httpMethod = HttpMethod.DELETE) public void deletePerson(int personIndex) { persone.remove(personIndex); } @MethodMapping(value = "/persone", httpMethod = HttpMethod.POST) public Persona createPerson(@RequestBody Persona persona) { persone.add(persona); return persona; } } STEP 03: Registrazione del servizio nell'applicazione Questa operazione registra il servizio e gli assegna /managerpersone nel path dell'applicazione Nel metodo Application.int() aggiungere: 3. mountResource("/managerpersone", new ResourceReference("restReference") { PersonsRestResource resource = new PersonsRestResource(); @Override public IResource getResource() { return resource; } }); STEP 04; Compilata l'applicazione, supposto che ad esempio myapp01 sia lo scope dell'applicazione e che /app sia il path assegnato alla servlet wicket, allora per accedere al servizio rest: http://localhost:8080/myapp01/app/managerpersone/persone questo far una richiedsta di tipo GET a cui corrisponde il metodo getAllPersons(). Pertanto la procedura risponder restituendo l'elenco delle persone (in formato json). E' anche possibile testare gli altri metodo con un client restful. -------------------------------------------------------------------------------- ----------------------------------------------