我有以下HTTP GET
请求:
@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) // Accept header
public Response getDetails(@PathParam("id") Integer id) {
Details details = dao.getDetails(id);
if (details == null) {
// account was not found
return Response
.status(Response.Status.NOT_FOUND)
.entity("<detailsNotFound />")
.build();
} else {
details.setLink(new ArrayList<Link>());
Link linkSelf = new Link();
linkSelf.setRel("self"); // the "self" relationship
linkSelf.setUri("/" + id);
details.getLink().add(linkSelf);
return Response.status(Response.Status.OK).entity(details).build();
}
}
我想知道如何实现条件获取用它来调用 Id-Modified-Since 标题?
这是涉及的实体:
<details>
<age>32</age>
<id>1</id>
<name>John Doe</name>
<timestamp>2018-04-16T00:00:00+01:00</timestamp>
</details>
我正在使用POSTMAN尝试这个,如果这有所不同?
修改
这就是我现在所拥有的,但我的主要问题是知道如何将if-modified-since标头与数据库中条目的时间戳进行比较?
@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) // Accept header
public Response getDetails(@PathParam("id") Integer id,@Context HttpHeaders headers) {
Details details = dao.getDetails(id);
//Below requests the if-modified-since header
//Check its not null and prints out the value
if (headers != null) {
List<String> ifModifiedSinceHeader = headers.getRequestHeader("if-modified-since");
if (ifModifiedSinceHeader != null ) {
for (String ifmodifiedsince : ifModifiedSinceHeader) {
System.out.print("If-Modified-Since: "+ifmodifiedsince);
}
}
}
if (details == null) {
// account was not found
return Response
.status(Response.Status.NOT_FOUND)
.entity("<detailsNotFound />")
.build();
} else {
details.setLink(new ArrayList<Link>());
Link linkSelf = new Link();
linkSelf.setRel("self"); // the "self" relationship
linkSelf.setUri("/" + id);
details.getLink().add(linkSelf);
return Response.status(Response.Status.OK).entity(details).build();
}
}