2014-09-10 17 views
1

我創建的代理我的REST API的基本路徑:如何強制apigee代理從目標URL網址響應改寫爲代理網址與

當你直接調用目標端點,例如:

POST http://products.example.com/items 

你會得到響應與位置標頭這樣

http://products.example.com/items/123131 

但是,如果我去通過代理:

POST http://example.apigee.net/products/v2/items 

然後位置標頭爲新創建的資源仍然指向目標URL:

http://products.example.com/items/3423423 

但我預計會得到

http://example.apigee.net/products/v2/items/3423423 

問題是:如何配置代理重寫URL以響應代理URL?

回答

0

Apigee代理允許您在流的響應部分添加策略。下面的例子:

<Flows> 
     <Flow name="myFlow"> 
      <Description></Description> 
      <Request/> 
      <Response> 
       <Step> 
        <Name>ModifyLocationHeaderPolicy</Name> 
       </Step> 
      <Response/> 
     </Flow> 
</Flows> 

我建議你添加將讀取響應的Location頭,重新寫一個JavaScript或Python或Java標註的政策。東西像下面的效果在Javascript

locationHeader = context.getVariable("message.header.Location"); 
// modify it 
context.setVariable("message.header.Location", locationHeader); 
+0

謝謝。我希望我不必手動編寫代碼。我的問題是如此罕見,以至於沒有內置的策略? HATEOAS呢?沒有人與apigee一起使用它? 那麼從apigee: 這個聲明怎麼樣?儘可能使用現成的策略,並避免在JavaScript中編寫所有API代理邏輯的誘惑。儘管Apigee Edge利用編譯後的JavaScript來提高性能, JavaScript不可能像政策一樣執行。「 來源:http://apigee.com/docs/api-services/content/programming-api-proxies-javascript – 2014-09-11 20:43:22

+0

@Pitor Bochynski - 我完全同意你的觀點。這並不罕見。 – 2014-09-12 05:30:43