如何使用Jersey API或任何其他jax-rs API在jax-rs中使用@HEAD?

时间:2013-04-28 13:20:02

标签: rest jersey jax-rs

如何使用Jersey API或任何其他jax-rs API在jax-rs中使用@HEAD?请给我样品。

2 个答案:

答案 0 :(得分:7)

您不需要明确支持HEAD,因为Jersey会自动支持它。以下是Jersey的文档说明:

  
    

默认情况下,如果没有明确实现,JAX-RS运行时将自动支持HEAD和OPTIONS方法。对于HEAD,运行时将调用实现的GET方法(如果存在)并忽略响应实体(如果设置)。对于OPTIONS,Allow响应标头将设置为资源支持的HTTP方法集。此外,Jersey将返回描述资源的WADL文档。

  

(资料来源:https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2011

答案 1 :(得分:0)

以下是一些简单的代码,用于说明如何使用Jersey客户端发送HEAD请求:

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);

WebResource resource = client
        .resource("http://localhost:8080/services/echo?message=Hello+World");

ClientResponse response = resource.accept(
        MediaType.APPLICATION_JSON).head();
System.out.println(response);

请注意使用head方法。返回的response对象包含许多有用的信息,例如生成的内容类型,请求的状态代码等。该示例可以转换为其他客户端库类型,但基本上您发送的请求与你会使用GET,但使用HEAD方法。下面是通过浏览器工具(如'REST Console'

)发送的请求示例

请求

HEAD /services/echo?message=Hello+World HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 0
Accept: application/json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=vWu5N2H8Y+P9SuZKWxhpIdgP.undefined

响应:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json
Content-Length: 0
Date: Fri, 03 May 2013 05:42:20 GMT