我是一个名为createCustomer()的方法,它是一个POST方法,它同时使用MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON,现在我想检查来自客户端的请求的实际MIME类型,它可以是XML或JSON,并根据请求的MIME类型,我想调用两种不同的方法。
请您提供代码来检查Incoming请求的MIME类型,并根据类型调用两种不同的方法。
示例代码如下所示:
@POST
@Path("/createCustomer")
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response createCustomer(Customer customer ) {
//if the request is in JSON then call the method createCustomerJSON()
//else if the request is in XML then call the method createCustomerXML()
//String output = output from either the method createCustomerJSON() or createCustomerXML()
return Response.status(200).entity(output).build();
}
答案 0 :(得分:0)
javax.ws.rs.Consumes注释可能就是您所需要的。通过在不同的方法上添加不同的注释,您可以拆分XML和JSON的处理。
来自javadoc:
定义资源类或MessageBodyReader的方法可以接受的媒体类型。如果未指定,容器将假定任何媒体类型都是可接受的。方法级别注释会覆盖类级别注释。容器负责确保调用的方法能够使用HTTP请求实体主体的媒体类型。如果没有这样的方法可用,则容器必须使用HTTP" 415 Unsupported Media Type"由RFC 2616指定。
答案 1 :(得分:0)
首先,发布一些代码会很棒。
其次,一个解决方案是创建两个具有相同路径的方法,一个使用XML,另一个使用JSON。
@POST
@Path("yourPath")
@Consumes(MediaType.APPLICATION_XML);
public Response createCustomerXML() {...}
@POST
@Path("yourPath")
@Consumes(MediaType.APPLICATION_JSON);
public Response createCustomerJSON() {...}