带有分号的java spring restful-url

时间:2010-06-18 18:53:25

标签: java spring rest

我目前正致力于一个需要在restful-url方案中使用分号的项目。

你可以想象,我们在解决这个问题时遇到了问题 - 底层的Java HTTPServletRequest打得不好。

有没有办法解决这个问题?

示例restulf-URL:

http://service/BOB;MIKE/

看起来Spring只在/ service / bob上工作 - MIKE被截断了。

我们尝试过%3B(或%3F之类的东西)并且它不起作用。

提前致谢!

CT

3 个答案:

答案 0 :(得分:3)

虽然@Amos M. Carpenter的答案是正确的,但这是关闭此行为所需的配置:

@Configuration
@EnableWebMvc
public class WebMvcConfiguration extends WebMvcConfigurerAdapter 
{
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer)
    {  
        configurer.getUrlPathHelper().setRemoveSemicolonContent(false);
    }
}

答案 1 :(得分:2)

这是您可以在URI中合法使用的所有分隔符的列表:

! $ & ( ) * , ; = + ' : @ / ?

尝试各自,看看哪些适合你。

显然,春天会抢走你;。我不确定这是否是一个Servlet的东西,但无论如何,它很糟糕。 Web框架应该允许开发人员构建任何合法的URI。

答案 2 :(得分:1)

似乎这是Spring的故意,但至少它是可配置的。

您需要告诉处理程序映射到setRemoveSemicolonContent(false)(默认为true)。有关详细信息,请参阅the Javadoc

这样做的原因是因为他们显然希望从URI中remove the ;jsessionid=... suffix