我已经使用Connexion和OpenAPI 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 最佳实践的其他示例。
任何提示最佳实践是什么和/或从哪里开始调试此问题?