2010-07-08 27 views
5

我想發佈到Jersey Rest服務。這樣做的標準方式是什麼?Jersey消費XML文章

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

嗯。您是否想要將客戶端POST發送到現有服務或實現Jersey RESTful服務? – 2010-07-09 17:28:58

回答

4

下面是一個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

假設你有一個Java bean說僱員豆等。添加標籤以告訴

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

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

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

@XmlRootElement指出這將是xml中的主標籤。在這種情況下,您也可以爲主標籤指定一個名稱。

@XmlElement告訴,這將是根標籤內的子標籤

說,示例XML是將來作爲身體的POST請求看起來像一個部分

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

當編寫web服務來控制這樣一個xml時,我們可以編寫下面的方法。

@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(); 
} 

在調用此服務時,您將得到以下xml作爲響應的一部分。

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

使用@Xml ...註解,解組和編組請求和響應對象變得非常容易。

類似的方法可採取JSON輸入和輸出JSON通過僅僅使用MediaType.APPLICATION_JSON代替APPLICATION_XML

所以對於一個XML作爲輸入,你可以得到一個XML作爲輸出的一部分http響應。 希望這有助於。