Я пытаюсь создать API на WSO2 ESB 4.7.0 для обработки запросов на службу RESTful. Похоже, что функция сопоставления URL-адресов не работает или работает как фильтр, выбирая, что отправлять на конечную точку, а что отбрасывать. Я следовал этому руководству: http://wso2.com/library/articles/2012/09/get-cup-coffee-wso2-way/. Вот моя конфигурация API:
<api xmlns="http://ws.apache.org/ns/synapse" name="rest" context="/rest">
<resource methods="GET" url-mapping="/">
<inSequence>
<send>
<endpoint>
<http method="get" uri-template="http://myserver/REST"/>
</endpoint>
</send>
</inSequence>
</resource>
<resource methods="GET" url-mapping="/numbers">
<inSequence>
<send>
<endpoint>
<http method="get" uri-template="http://myserver/REST/allnumbers"/>
</endpoint>
</send>
</inSequence>
</resource>
</api>
Возможны три ситуации:
- Этот URL работает:
http://esb/rest
- Этот URL не работает:
http://esb/rest/numbers
- Этот URL работает:
http://myserver/REST/allnumbers
В ситуации 2 я получил ошибку Apache Tomcat:
HTTP Status 404 - Not Found
type Status report
message Not Found
description The requested resource (Not Found) is not available.
Apache Tomcat/6.0.32
Но если я попробую адрес конечной точки, это сработает. Я думал, что URL-Mapping будет перенаправлять запросы для «/numbers» на «/allnumbers». Что я делаю не так?