提问者:小点点

spring REST RequestMethod如何映射一个http锁和解锁请求映射?


这似乎与Spring MVC中的自定义HTTP方法相同

我需要使用 http 方法 LOCK 和 UNLOCK 实现调用。

目前spring的requestMethod只支持

public enum RequestMethod {

    GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE

}

如果使用LOCK和UNLOCK http指令调用spring应用程序,我如何实现@RestController方法?


共1个答案

匿名用户

您可以使用支持的方法(GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS、TRACE)调用来执行此操作。以下是在内部调用post方法的方法:

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    @Override
    @Bean
    public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {

        final RequestMappingHandlerAdapter requestMappingHandlerAdapter = super.requestMappingHandlerAdapter();
        requestMappingHandlerAdapter.setSupportedMethods(
            "LOCK", "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE"
        ); //here supported method

        return requestMappingHandlerAdapter;
    }

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

自定义方法处理程序类。这里在内部调用post方法:

public class CustomHttpMethods extends DispatcherServlet {

    @Override
    protected void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {

        if ("LOCK".equals(request.getMethod())) {
            super.doPost(request, response);
        } else {
            super.service(request, response);
        }
    }

}

现在,您按以下方式请求映射:

@RequestMapping(value = "/custom")
ResponseEntity customHttpMethod(){
    return ResponseEntity.ok().build();
}