2

我已经使用ConnexionOpenAPI 3.0部署了一个 Web 服务。我在本地运行它以进行调试测试,然后将其部署到生产服务器。

我正在努力解决如何在 OpenAPI 文件中正确指定服务器 URL。当我指定这个时,一切都按预期工作:

servers:
  - url: http://localhost:5000/basepath/v1

我可以通过一个简单的调用来测试它:

curl -X POST "http://localhost:5000/basepath/v1/endpoint" -H "accept: application/json" -H "Content-Type: application/json" -d "..."

同样适用于生产服务器:

curl -X POST "http://myserver.net/basepath/v1/endpoint" -H "accept: application/json" -H "Content-Type: application/json" -d "..."

但是,我想指定生产服务器的 URL,以便充分利用 OpenAPI 的强大功能(例如,生成 cURL 调用的 UI)。所以我添加了另一个网址:

servers:
  - url: http://localhost:5000/basepath/v1
  - url: http://myserver.net/basepath/v1

但是,当我调用该服务时,生产服务器上不再找到该端点:

curl -X POST "http://myserver.net/basepath/v1/endpoint" -H "accept: application/json" -H "Content-Type: application/json" -d "..."
{
  "detail": "The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.",
  "status": 404,
  "title": "Not Found",
  "type": "about:blank"
}

我已经验证了很多次,以确保调用是相同的,并且添加的 URL 条目是唯一的更改。

当我删除该localhost行时,它既不能在本地工作,也不能在生产服务器上工作。

我认为这与 Connexion 如何读取 API 规范以及它如何设置路由有关。不过,关于这方面的文档非常稀少,而且我找不到关于 Connexion 和 OpenAPI 3.0 最佳实践的其他示例。

任何提示最佳实践是什么和/或从哪里开始调试此问题?

4

0 回答 0