当前位置: 首页 > 知识库问答 >
问题:

Spring MVC中的自定义HTTP方法

储嘉悦
2023-03-14

我正在尝试为处理COPY HTTP方法的资源创建一个自定义Spring MVC控制器。

@请求映射只接受以下请求方法值:GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS和TRACE。

在Spring MVC控制器中处理自定义HTTP方法是否有任何推荐的方法?

共有1个答案

司健柏
2023-03-14

Servlet规范仅允许GETHEADPOSTPUT以及DELETEOPTIONS或者TRACEHTTP方法。这可以在Servlet API的Apache Tomcat实现中看到。

这反映在Spring API的请求方法枚举中。

您可以通过实现自己的DispatcherServlet重写service方法以允许COPYHTTP方法-将其更改为POST方法,并自定义RequestMappingHandlerAdapterbean以允许它。

类似这样,使用Spring靴:

@Controller
@EnableAutoConfiguration
@Configuration
public class HttpMethods extends WebMvcConfigurationSupport {

    public static class CopyMethodDispatcher extends DispatcherServlet {
        private static final long serialVersionUID = 1L;

        @Override
        protected void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
            if ("COPY".equals(request.getMethod())) {
                super.doPost(request, response);
            }
            else {
                super.service(request, response);
            }
        }
    }

    public static void main(final String[] args) throws Exception {
        SpringApplication.run(HttpMethods.class, args);
    }

    @RequestMapping("/method")
    @ResponseBody
    public String customMethod(final HttpServletRequest request) {
        return request.getMethod();
    }

    @Override
    @Bean
    public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
        final RequestMappingHandlerAdapter requestMappingHandlerAdapter = super.requestMappingHandlerAdapter();
        requestMappingHandlerAdapter.setSupportedMethods("COPY", "POST", "GET"); // add all methods your controllers need to support

        return requestMappingHandlerAdapter;
    }

    @Bean
    DispatcherServlet dispatcherServlet() {
        return new CopyMethodDispatcher();
    }
}

现在您可以使用COPYHTTP方法调用/方法endpoint。使用curl这将是:

curl -v -X COPY http://localhost:8080/method
 类似资料:
  • 主要内容:Maven依赖关系,自定义HTTP头示例HTTP消息可以包含许多描述消息属性的标头,例如内容长度,内容类型,授权等。 HttpClient提供了检索,添加,删除和枚举标头的方法。 在下面的教程中,我们将演示如何将自定义HTTP头添加到HttpClient和Http请求方法。 Maven依赖关系 我们使用maven来管理依赖关系,并使用Apache HttpClient 4.5版本。 将以下依赖项添加到您的项目中。 pom.xml 文件的

  • 本文向大家介绍springMVC自定义注解,用AOP来实现日志记录的方法,包括了springMVC自定义注解,用AOP来实现日志记录的方法的使用技巧和注意事项,需要的朋友参考一下 需求背景 最近的一个项目,在项目基本完工的阶段,客户提出要将所有业务操作的日志记录到数据库中,并且要提取一些业务的关键信息(比如交易单号)体现在日志中。 为了保证工期,在查阅了资料以后,决定用AOP+自定义注解的方式来完

  • 本章将会讨论如何在API设计中使用自定义方法。 自定义方法指的是五个标准方法之外的API方法。他们应当仅用于标准方法不易表达的功能。一般而言,API设计者应当尽可能优先考虑使用标准方法,而不是自定义方法。标准方法相对更简单,定义完善的语义,并且开发者也更加熟悉;这使标准方法更易用,并且使用者更难犯错。使用标准方法的另一个优势是API平台会有更好的支持,如计费、错误处理、日志、监控等等。 自定义方法

  • 本文向大家介绍Javacript中自定义的map.js  的方法,包括了Javacript中自定义的map.js  的方法的使用技巧和注意事项,需要的朋友参考一下  js中没有map这个类,只能自己写一个。以下map.js和map-util.js都是自定义的map,任选其一就可以。你可以用它来像java里new Map()和put()、remove()、get()等方法。 map.js: map-

  • 在自定义arrayAdapter中实现自定义getFilter时遇到问题。实际上,我不知道如何实现它。尝试了各种代码,但仍然没有成功。这是我的自定义阵列适配器。 这是ListTO课程。 这是布局图。 这里的搜索关键字来自“inputSearch”编辑文本。 这是文本更改的侦听器。 谢谢

  • 我正在努力裁剪javax。验证。ConstraintValidator和javax。验证。根据我的需要限制ValidatorContext。我从格式错误的请求正文收到的响应消息始终采用以下形状: <代码> 此消息也以500而不是400错误请求的形式返回。我无法获得工作到解决方案来执行以下操作: 仅包括<代码> 我有以下代码: 向上面的代码发送格式错误的有效负载将导致如下消息: 我希望能够收到以下信