在RESTful Web服务中将对象作为参数传递

时间:2012-07-21 11:19:57

标签: java web-services rest jaxb restful-authentication

我正在成功创建一个简单类型的简单RESTful Web服务。现在我想传递一个对象作为Web服务的参数,并将对象作为响应。我的方案是,使用Jaxb将XML消息解析为对象,并将该对象作为Web服务请求发送。在服务器端之后,它处理请求的对象并生成响应xml文件并将其作为对象发回。

在URL路径中,我提供

 "http://localhost:8080/SampleWS/rest/checkXML/username=visolve&password=visolve" 

表示简单类型。但是在对象中我不知道如何在URL中给出对象引用。请帮我解决问题..

Regards

Bathakarai

2 个答案:

答案 0 :(得分:2)

只需定义一个非常好看的域对象。 JAXB和JAX-RS将完成剩下的工作。

JAXB。

@XmlRootElement
class Regards {

    @XmlElement
    private long sincerely;
}

JAX-RS。

@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@POST
@Path("/sincerely")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response sincerely(final Regards regards) {

    regards.setSincerely(System.currentTimeMillis());

    return Response.ok(regards).build();
}

答案 1 :(得分:1)

虽然您当然可以在网址中包含整个XML内容,但我可能会回避它。

以这种方式思考:如果您在URL中对XML进行编码,则可能会在两端添加更多工作。现在,服务器和客户端都需要知道如何正确构建URL,并检查以确保所有内容都正确排列。如果您将来需要提供相同内容的JSON或YAML视图,该怎么办?现在,您的URL可能还需要包含内容类型。字符编码怎么样?

所有这些都说,HTTP提供了一个很好的传输机制,已经解决了这些问题。将XML包含为HTTP消息的实体主体,并使用HTTP标头来标识您要发送的内容类型,字符编码等。这将同时适用于两种方式(服务器和客户端都可以来回传送XML,并更好地利用HTTP。

Here's相关链接可能有助于解决部分细节问题。并且another

请注意,请告诉我您不打算通过未加密的链接以纯文本发送用户凭据。