背景
我们正在使用miragejs来模拟服务器apis。我们的服务器/后端遵循微服务体系结构,每个微服务都是单独版本的,因此我们的api路径具有
{base_version} -服务器/发布版本,随环境而变化(dev / qa / uat / prod){microservice_version} -对于每个环境中的每个微服务不同
一个典型的api url看起来像
example.com/
{base_version}/microservice/{microservice_version}/api_endpoint?parameter=value
问题
在设置海市蜃楼模仿路线的时候,
使用通配符(*)对passthrough:和{base_version}使用通配符(*)的
{microservice_version}example.com/*/microservice/*/api_endpoint?parameter=value
但是,以下所有工作都是正确的:
用于{microservice_version}的
{base_version}的实际值example.com/*/microservice/v2/api_endpoint?parameter=value
用于{base_version}的
{microservice_version}的实际值example.com/v3/microservice/*/api_endpoint?parameter=value
{microservice_version}、{base_version}和中间的任何事物)example.com/**/api_终结点?参数=值
以上三种工作解决方案中的任何一种要求我们硬编码一个版本,或者忽略微服务名称/路径,这并不理想,因为我们有多个环境/版本、多个微服务版本和不同微服务中的相同api端点(例如过滤器/属性)。
是否有一种干净的方法可以让miragejs使用api url中的多个通配符?
发布于 2020-09-27 04:19:41
由于Miragejs在内部使用Pretender,示例url中的多个通配符应该可以工作。
example.com/*/microservice/*/api_endpoint?parameter=value您还可以使用:处理动态段而不是*。
至于您所面临的问题,我想,您正在尝试使用request.params来识别基本版本和微服务版本。
当使用未命名的动态段时,request.params将包含一个值(最后一个段匹配)。
这可能是在使用多个通配符时使用通入的原因。
正如@tmdesigned建议的那样,如果需要使用版本参数,您可以使用一个命名的动态段,如:base或*base。
https://stackoverflow.com/questions/63956371
复制相似问题