RAML中的多个baseUri?

Posted

技术标签:

【中文标题】RAML中的多个baseUri?【英文标题】:Multiple baseUri in RAML? 【发布时间】:2015-06-05 19:56:26 【问题描述】:

我是 RAML 的新手,我有一个基本问题:

不能指定一组替代 baseUri(只允许一个)。是否有任何替代方法来模拟 API 的多个替代安装(例如,用于单独的发布周期环境)?

【问题讨论】:

【参考方案1】:

一种方法是使用 baseUriParameters 并为不同的部署使用枚举值。

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

【讨论】:

【参考方案2】:

我处理这个问题的方法是模板化baseUri

对于我使用的 JVM 应用程序:

baseUri: $baseUri

并将 RAML 文件呈现为 JSP。

对于我使用的 Ruby 应用程序:

baseUri: <%= base_uri >

并呈现为 ERB。

baseUri 的值是根据入站请求动态计算的,因此它始终与部署它的主机/域匹配。

【讨论】:

不错!我想我提供的解决方案对于手动组合此属性(即合同优先样式)是有效的,而您指定的方法是根据实际实现(即部署优先样式)组合此属性。 嗯,我是契约优先的支持者,我认为 RAML 实际上非常支持和鼓励契约优先的方法。但是将baseUri 的值固定为预定义的集合太不切实际了,尤其是当您对最终URI 是随机的(由云提供商生成)的集成构建进行临时云部署时。

以上是关于RAML中的多个baseUri?的主要内容,如果未能解决你的问题,请参考以下文章

RAML- !include 奇怪的行为

如何在 RAML 中定义一个全局变量

Saxon 中的 BaseUri 在尝试编译 xslt 内容时导致问题

Anypoint Platform RAML模拟服务中的响应标头“Content-Type”不正确

将图像的 baseUri 更新为 ===> 未定义

Baseuri