我正在使用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
。
知道我错的原因吗?
答案 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;。
祝你好运。