2010-07-08 5 views
5

Desidero creare un servizio Post su Jersey Rest. Qual è il modo standard per farlo?Jersey Consuma post XML

@Post 
@Consumes(MediaType.Application_xml) 
public Response method(??){} 
+0

Hmm. Vuoi trasformare un cliente POST in un servizio esistente o implementare un servizio RESTful di Jersey? –

risposta

4

Di seguito è un esempio di un'operazione POST:

@POST 
@Consumes({"application/xml", "application/json"}) 
public Response create(@Context UriInfo uriInfo, Customer entity) { 
    entityManager.persist(entity); 
    entityManager.flush(); 

    UriBuilder uriBuilder = uriBuiler.path(String.valueOf(entity.getId())); 
    return Response.created(uriBuilder.build()).build(); 
} 
6

Supponiamo di avere un bean Java dire un bean dipendente come ad esempio. Aggiungi i tag per dirlo allo

@XmlRootElement (name = "Employee") 
public class Employee { 
    String employeeName; 

    @XmlElement 
    public String getEmployeeName() { 
     return employeeName; 
    } 

    public void setEmployeeName(String employeeName) { 
     this.employeeName = employeeName; 
    } 
} 

@XmlRootElement indica che questo sarà il tag principale in xml. In questo caso puoi anche specificare un nome per il tag principale.

@XmlElement dice che questo sarebbe il tag sub all'interno del tag radice

Say, il campione XML che verrà come una parte del corpo nella richiesta POST sarà simile

<?xml version="1.0" encoding="UTF-8"?> 
<Employee> 
<employeeName>Jack</employeeName> 
</Employee> 

Quando scriviamo un webservice per accettare un tale xml possiamo scrivere il seguente metodo.

@POST 
@Path("/post") 
@Consumes(MediaType.APPLICATION_XML) 
@Produces(MediaType.APPLICATION_XML) 
public Response getEmployee(Employee employee) { 
    employee.setEmployeeName(employee.getEmployeeName() + " Welcome"); 
    return Response.status(Status.OK).entity(employee).build(); 
} 

Alla chiamata di questo servizio, si riceverà il seguente xml come parte della risposta.

<Employee> 
<employeeName> Jack Welcome </employeeName> 
</Employee> 

utilizzando atributo @xml ... annotazioni, diventa molto facile da unmarshalling e il maresciallo di richiesta e di risposta oggetti.

approccio simile può essere preso per l'ingresso JSON e JSON uscita da solo utilizzando il MediaType.APPLICATION_JSON invece di APPLICATION_XML

Così, per un XML come input, è possibile ottenere un XML come uscita come parte del risposta http. Spero che questo aiuti.