umijs / plugins

🍣 The one-stop shop for official Umi plugins and presets.
349 stars 238 forks source link

openapi根据paths生成的api, 如何拼接 basePath在生成的Api前面呢 #790

Closed xoptimal closed 2 years ago

xoptimal commented 2 years ago

如题

  "basePath": "/networking/v1",
  "paths": {
    "/aircraft": {
      "get": {}
    }}

生成后是这样的

request<API.Response>(`/aircraft`, {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json',
    },
    params: { ...queryParams },
    data: body,
    ...(options || {}),
  })

如何在 aircraft 前面 , 加上 basePath , 也就是变成 /networking/v1/aircraft

@chenshuai2144

xoptimal commented 2 years ago

后面我找到了 apiPrefix , 但是我直接传递string后报错了, 拼接的那块就出现异常了, 返回了下面这个格式

`${/networking/1v}/networks`
xoptimal commented 2 years ago

问题已解决, apiPrefix 多包裹一层 apiPrefix: "'/networking/v1'"

不太理解为何要多包裹一层, 希望给予解答:

if (prefix.startsWith("'") || prefix.startsWith('"') || prefix.startsWith('`')) {
    const finalPrefix = prefix.slice(1, prefix.length - 1);
    if (
      formattedPath.startsWith(finalPrefix) ||
      formattedPath.startsWith(`/${finalPrefix}`)
    ) {
      return formattedPath;
    }
    return `${finalPrefix}${formattedPath}`;
    }
    // prefix 变量
    return `$\{${prefix}}${formattedPath}`;
}
shanzhaozhen commented 2 years ago

问题已解决, apiPrefix 多包裹一层 apiPrefix: "'/networking/v1'"

不太理解为何要多包裹一层, 希望给予解答:

if (prefix.startsWith("'") || prefix.startsWith('"') || prefix.startsWith('`')) {
    const finalPrefix = prefix.slice(1, prefix.length - 1);
    if (
      formattedPath.startsWith(finalPrefix) ||
      formattedPath.startsWith(`/${finalPrefix}`)
    ) {
      return formattedPath;
    }
    return `${finalPrefix}${formattedPath}`;
    }
    // prefix 变量
    return `$\{${prefix}}${formattedPath}`;
}

如果不多包一层就是用全局变量的意思吧