我正在使用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/