java 如何获取REST请求的HTTP方法

9gm1akwq  于 2022-12-21  发布在  Java
关注(0)|答案(3)|浏览(228)

如果我的Java REST应用程序中出现异常,我希望记录导致HTTP请求的各种信息。
我可以通过上下文注入获得请求的URI和HTTP标头

@Context
private UriInfo uriInfo;

@Context
private HttpHeaders headers;

但是我怎样才能获得HTTP方法(GET、PUT ...)呢?

83qze16e

83qze16e1#

我穿泽西的。不知道你是否适合,但是......

import javax.servlet.http.HttpServletRequest;    

@Context final HttpServletRequest request

Request类具有方法getMethod()。它返回使用的HTTP方法。

jyztefdp

jyztefdp2#

您通常将其余方法限制为一个http方法

@GET
 @Produces("text/plain")
  public String getClichedMessage() {
    // Return some cliched textual content
    return "Hello World";
 }
gtlvzcf8

gtlvzcf83#

泽西岛是无关紧要的(下面是得票最多的答案)。
Java Servlet API的HttpServletRequest类具有getMethod()方法,该方法返回HTTP方法的名称(GET, POST, PUT等)。
但是你并不总是需要它,例如,如果你在servlet中,你有doGet,doPost方法。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   //method is POST
}

受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException { //方法是GET }
但您确实需要它,例如,在筛选器中:

public void doFilter(ServletRequest request, ServletResponse response, 
          FilterChain chain) throws ServletException, IOException {

     String method = ((HttpServletRequest) request).getMethod();

}

说到REST,不同的REST框架可以提供不同的方法来获取HttpServletRequest对象。

相关问题