spring 使用javax.servlet.http.HttpServlet处理PATCH请求?

hc2pp10m  于 2022-10-30  发布在  Spring
关注(0)|答案(2)|浏览(373)

我们使用javax.servlet.http.HttpServlet类的实现作为SpringWeb应用程序中的错误页面(在web.xml中定义),以便过滤出于安全原因发送给API用户的错误信息。
最近,我们还必须处理对API的PATCH请求。由于HttpServlet是使用HTTP 1.1版实现的,因此它不支持PATCH请求(“PATCH”字符串作为请求方法名)。如果我们要添加该功能,我们必须覆盖整个HttpServlet实现,这对我们来说也有负面的安全含义。
是否有现成的方法来实现我们正在尝试的目标,或者我们是否必须切换到另一种实现(也是可行的)?

bvhaajcl

bvhaajcl1#

尝试重写HttpServlet.service方法。对于“DELETE”、“GET”、“HEAD”、“OPTIONS”、“POST”、“PUT”和“TRACE”,请将请求传递给服务的super实现。
对于“PATCH”,调用在重写类中定义的doPatch方法。
在实际类别中实作doPatch
有关邮件正文的更多信息:
检查一个HTTP引用,看看哪些方法支持方法体,哪些不支持。

v1l68za4

v1l68za42#

public class CustomServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String method = req.getMethod();
        if (!method.equals("PATCH")) {
            super.service(req, resp);
        }

        this.doPatch(req, resp);
    }

    protected void doPatch(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("At patch method");
    }

}

相关问题