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

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

我正在使用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时出错。

知道我为什么错吗?

最佳答案

请尝试以下操作:

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


请注意,您已经使用了一个额外的“ $”。
在RegEx中,“ $”表示“句子结尾”。

祝好运。

关于java - tuckey urlrewrite返回404找不到,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25895808/

10-10 20:14