2013-12-11 171 views
1

我已經暴露在WSO2 ESB使用<api> REST服務。但答覆並未到來。 REST服務是用Apache Wink編寫的。WSO2 ESB - REST API - 響應不來

API

<api name="API_2" context="/hello" hostname="localhost" port="8080"> 
    <resource url-mapping="/name" methods="GET"> 
    <inSequence>  
     <log level="full"/> 
     <property name="messageType" value="text/plain" scope="transport" type="STRING"/>    
     <send> 
     <endpoint>        
      <address uri="http://localhost:8080/HelloService/rest/test/hello"/> 
     </endpoint> 
     </send> 
    </inSequence> 
    <outSequence> 
     <log level="full"/> 
     <send/> 
    </outSequence> 
    </resource> 
</api> 

ESB日誌

[2013-12-11 12:28:24,643] INFO - API Initializing API: API_2 
[2013-12-11 12:28:35,467] INFO - LogMediator To: /hello/name, MessageID: urn:uuid:52d2ddf1-301e-42e0-ac9d-ac4a57ac8c72, Direction: request 

回答

1

我覺得你的端點地址是錯誤的,看起來像你有重複兩次打招呼。因爲您在代理名稱中也有hello,這也會附加到URL。

嘗試<address uri="http://localhost:8080/HelloService/rest/test"/>

你也可以在單獨的瀏覽器調用「URI + URL映射」驗證

我已經表明樣品API下面對我的作品後端的作品,你應該叫您的API作爲下面和日誌將打印如下。

網址撥打:http://localhost:8280/TestAPI/customerservice/customers/123

INFO - LogMediator爲:/ TestAPI /的CustomerService /客戶/ 123

<api xmlns="http://ws.apache.org/ns/synapse" name="TestAPI" context="/TestAPI"> 
    <resource methods="GET" url-mapping="/customerservice/customers/123"> 
     <inSequence> 
     <log/> 
     <send> 
      <endpoint> 
       <address uri="http://localhost:9764/jaxrs_basic/services/customers"/> 
      </endpoint> 
     </send> 
     </inSequence> 
     <outSequence> 
     <log/> 
     <send/> 
     </outSequence> 
    </resource> 
</api> 
+0

的 「http://本地主機:8080/HelloService的/ REST /測試/你好」 是實際的RESTful Web服務實現。當請求發送到「http:// localhost:8280/hello/name」時,它是否充當代理並將請求轉發給實際實現? – user3049576

+0

好,你的情況proxy會轉發到您的地址請求(HTTP://本地主機:8080/HelloService的/ REST /測試/你好/ ),這是http://本地主機:8080/HelloService的/ REST /測試/你好/ name,因此請查看您是否在瀏覽器中獲得此URL的響應。 – jayalalk

+0

此外,如果上述後端網址運作正常,請從API定義中刪除主機名和端口,這是這裏的問題。使用像我的示例,讓我知道你的問題是否由此解決。它的工作原理是 – jayalalk