首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sanic-openapi时找不到swagger.json

使用sanic-openapi时找不到swagger.json
EN

Stack Overflow用户
提问于 2020-07-12 17:58:21
回答 1查看 356关注 0票数 0

我正在尝试使用带有sanicSanic-OpenAPI模块来自动记录我自己的RESTful API。因此,我通过运行以下命令来安装它们:

代码语言:javascript
复制
pip install sanic sanic-openapi

# sanic version is 19.12.2
# sanic_openapi version is 0.6.1

我创建了这个简单的项目,顺便说一句,它是在他们的官方GitHub存储库中提供的。它看起来如下所示:

代码语言:javascript
复制
from sanic import Sanic, response
from sanic_openapi import swagger_blueprint


app = Sanic("app")
app.blueprint(swagger_blueprint)


@app.route("/")
async def test(request):
    return response.json({"hello": "world"})


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000, debug=True)

这运行得很好!但是当我尝试访问http://localhost:8000/swagger时,它抛出了以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic/app.py", line 974, in handle_request
    response = handler(request, *args, **kwargs)
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic_openapi/swagger.py", line 263, in spec
    return json(swagger_blueprint._spec)
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic/response.py", line 234, in json
    dumps(body, **kwargs),
TypeError: <sanic_openapi.spec.Spec object at 0x7effe3d2f910> is not JSON serializable
[2020-07-12 11:34:09 +0200] - (sanic.access)[INFO][127.0.0.1:37880]: GET http://localhost:8000/swagger/swagger.json  500 2649
[2020-07-12 11:34:09 +0200] [11014] [ERROR] Exception occurred while handling uri: 'http://localhost:8000/swagger/swagger.json'
Traceback (most recent call last):
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic/app.py", line 974, in handle_request
    response = handler(request, *args, **kwargs)
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic_openapi/swagger.py", line 263, in spec
    return json(swagger_blueprint._spec)
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic/response.py", line 234, in json
    dumps(body, **kwargs),
TypeError: <sanic_openapi.spec.Spec object at 0x7effe3d2f910> is not JSON serializable
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-12 17:58:21

经过大约两个小时的搜索,我在他们的官方GitHub存储库的this issue中找到了解决方案。根据这个问题,原因是sanic-openapiujson的最后两个版本(2.x3.x)不兼容。

因此,要解决此问题,您需要将您的ujson包降级为1.35,如下所示:

代码语言:javascript
复制
pip install ujson==1.35

现在,它完美地工作了:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62859613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档