你給了一半的答案你的問題的名言:
對於HEAD運行時將調用實現GET方法(如果存在的話),並忽略響應實體(如果設置)。
所以以啓用enpoint HEAD方法,你有兩個選擇:
- 實現GET和澤西會自動提供HEAD
- 的默認實現執行HEAD明確
POST方法不能用於提供默認HEAD實現的原因是POST方法既不安全也不冪級(如HTTP標準中定義的)。這意味着如果有人調用POST方法,他們必須假定它會對應用程序/資源狀態產生影響。另一方面,GET和HEAD都是安全和冪等的,所以它們不能改變狀態。
爲了回答你問題的第二部分 - 實施頭不從執行其他HTTP方法不同:
import javax.ws.rs.GET;
import javax.ws.rs.HEAD;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("api/ping")
public class MyResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String ping() {
return "pong!";
}
@HEAD
public Response getHeaders() {
return Response.status(200).
header("yourHeaderName", "yourHeaderValue").build();
}
}