tuckey urlrewrite返回404未找到

时间:2014-09-17 16:30:43

标签: java jersey tuckey-urlrewrite-filter

我正在使用Jersey框架,我的端点是/v1/users/{user_id: \p{XDigit}{8}}/orders/{order_id: \p{XDigit}{8}}

我需要的是将网址/v2/users/{user_id: \p{XDigit}{8}}/orders/{order_id: \p{XDigit}{8}}重写为上面的网址。

我正在使用tuckey进行url重写。以下是我的urlrewrite.xml。

<rule>
    <from>^/v2/users/([A-Fa-f0-9]{8})$/orders/([A-Fa-f0-9]{8})$</from>
    <to>/v1/users/$1/orders/$2</to>
</rule>

通过发送请求curl 'localhost:8080/v1/users/11111111/orders/11111111',我正在点击正确的端点,但是当我尝试curl 'localhost:8080/v2/users/11111111/orders/11111111'时,我得到了404 NOT FOUND响应。

当我将urlrewrite.xml更改为以下

<rule>
    <from>^/v2/users/([A-Fa-f0-9]{8})/orders/([A-Fa-f0-9]{8})</from>
    <to>/v1/users/([A-Fa-f0-9]{8})/orders/([A-Fa-f0-9]{8})</to>
</rule>

我收到的错误是You did not supply enough values to fill path parameters

知道我错的原因吗?

1 个答案:

答案 0 :(得分:1)

请尝试以下方法:

<rule>
    <from>^/v2/users/([A-Fa-f0-9]{8})/orders/([A-Fa-f0-9]{8})$</from>
    <to>/v1/users/$1/orders/$2</to>
</rule>

请注意,您已经使用了一个额外的&#39; $&#39;。 在RegEx中,&#39; $&#39;意味着句子的结尾&#39;。

祝你好运。