【发布时间】:2018-04-02 23:46:57
【问题描述】:
最初的问题是当我使用“DELETE”方法发送一个 http 请求时,正文部分无法发送到服务器。
google了一下,发现this article建议修改server.xml文件,在Connector部分加入'parseBodyMethods'即可解决问题:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
parseBodyMethods="POST,PUT,DELETE"
redirectPort="8443" />
但是,因为我使用的是 spring 的嵌入式 tomcat,所以我必须找到一种方法来以 spring 的方式做同样的事情。所以,我发现this article 似乎允许我添加 ConnectorCustomizer 并向连接器添加附加属性。以下是我的代码:
public class MyTomcatConnectorCustomizer implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer factory) {
if(factory instanceof TomcatEmbeddedServletContainerFactory) {
customizeTomcat((TomcatEmbeddedServletContainerFactory) factory);
}
}
public void customizeTomcat(TomcatEmbeddedServletContainerFactory factory) {
TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) factory;
tomcat.addConnectorCustomizers(connector -> {
connector.setAttribute("parseBodyMethods", "POST,PUT,DELETE");
});
}
}
@Bean
MyTomcatConnectorCustomizer myTomcatConnectorCustomizer() {
MyTomcatConnectorCustomizer myTomcatConnectorCustomizer = new MyTomcatConnectorCustomizer();
return myTomcatConnectorCustomizer;
}
但是,同样的问题仍然存在。当我向服务器发送“删除”请求时,正文仍然是空的。有没有人遇到过同样的问题?感谢您的帮助!
【问题讨论】:
标签: spring rest tomcat embedded-tomcat-7 embedded-tomcat-8