2015-04-01 49 views
3

我是新來的RAML,我有一個基本的問題:RAML中有多個baseUri?

不可能指定一組替代baseUri(只允許一個)。是否有其他方法可以模擬API的多個替代安裝(例如,針對單獨的發佈週期環境)?

回答

3

我處理這個問題的方式是通過模板baseUri

對於JVM的應用程序使用:

baseUri: ${baseUri} 

並呈現RAML文件作爲JSP。

的Ruby應用程序使用:

baseUri: <%= base_uri > 

,並呈現爲ERB。

baseUri的值基於入站請求即時計算,因此它始終與其部署的主機/域匹配。

+0

不錯!我想我提供的解決方案對於手動組合這個屬性是合法的(即契約優先風格),而你指定的方法是基於實際實現(即部署優先風格)組成這個屬性。 – nize 2015-04-02 07:42:26

+0

那麼我是合同優先的支持者,我認爲RAML實際上支持並鼓勵合同優先的方法。但是將'baseUri'的值修改爲預定義的集合將會太不切實際,尤其是當您對最終URI是隨機的(由雲提供者生成)的集成構建進行臨時雲部署時。 – 2015-04-02 14:49:56

7

一種方法是使用baseUriParameters併爲不同部署使用枚舉值。

#%RAML 0.8 
title: Some Service 
version: 1 
baseUri: https://{environment}/rest/v{version}/services/someservice 
baseUriParameters: 
    environment: 
    description: Integration test, Acceptance Integration Test, Production 
    enum: ["test-api.company.com","acc-api.company.com","api.company.com"]