我正在处理一个休息API,当通过发布XML文件发出请求时,如果成功接收文件,它应发送响应200 OK,如果XML文件丢失了任何标记,则应发送400如果使用GET而不是POST,则会出错。我能够做前两个案例200和400,不知道如何在代码中添加500。我在这里发布我的代码,请建议。
if (dataFile==null) {
try {
response.sendError(HttpServletResponse.SC_BAD_REQUEST,
"Failed to process content of file.");
}
catch (IOException e1) {
LOGGER.error("Failed to send response due to error:
" + e1.getMessage());
}
}
else{
response.setStatus(HttpServletResponse.SC_OK);
response.addHeader("Location", getResourceUri(dataFileMetadata,
request).toString());
答案 0 :(得分:0)
从您的代码示例中可以清楚地知道您要在那里做什么, 但我猜你在谈论这样的事情:
@POST
@Path("/some/path")
@Consumes(MediaType.APPLICATION_XML)
public Response post(String someXML) {
try {
if (isMissingTag(someXML)) {
return Response.status(Status.BAD_REQUEST).entity("error message goes here").build();
}
// do stuff
return Response.ok().build();
} catch (Exception e) {
LOG.error("error message goes here", e);
return Response.serverError().entity("error message goes here").build();
}
}
如果有人试图使用GET命中您的服务,您将不需要返回任何内容,因为您不是首先将其作为端点发布。
如果您对编写宁静的网络服务感兴趣,我强烈建议您阅读the jersey user guide。