背景
我们正在使用 miragejs 来模拟服务器 API。我们的服务器/后端,遵循微服务架构,每个微服务都是单独版本的,因此我们的 api 路径有
{base_version}
- 服务器/发布版本,根据环境更改(dev / qa / uat / prod){microservice_version}
- 每个环境中的每个微服务都不同
一个典型的 api url 看起来像
example.com/
{base_version}
/microservice/{microservice_version}
/api_endpoint?parameter=value
问题
在为 miragejs 模拟设置路线时,
- 对 和 都使用通配符 (*)
{microservice_version}
并{base_version}
失败,并导致直通:
example.com/*/microservice/*/api_endpoint?parameter=value
但是,以下所有操作都可以正常工作:
- 通配符
{base_version}
和实际值{microservice_version}
example.com/*/microservice/v2/api_endpoint?parameter=value
- 通配符
{microservice_version}
和实际值{base_version}
example.com/v3/microservice/*/api_endpoint?parameter=value
- 双通配符(转义
{microservice_version}
,{base_version}
和介于两者之间的任何内容)
example.com/**/api_endpoint?parameter=value
上述 3 个可行的解决方案中的任何一个都需要我们硬编码一个版本,或者忽略微服务名称/路径,这并不理想,因为我们有多个环境/版本、多个微服务版本以及不同微服务中的相同 api 端点(例如过滤器/ 属性)。
有没有一种干净的方法可以让 miragejs 在 api url 中使用多个通配符?