同时使用 Django REST 框架和 Web 套接字

Posted

技术标签:

【中文标题】同时使用 Django REST 框架和 Web 套接字【英文标题】:Use both Django REST framework and web sockets 【发布时间】:2021-11-06 18:31:49 【问题描述】:

我有一个基于 Django 构建的应用程序。最初,我使用 Django REST API 框架构建了一些 API,效果很好。后来,我实现了 Web 套接字来监听服务器。 我在端口 5010 上启动了应用程序服务器,该应用程序侦听服务器的套接字是 8010。 但是,在实现 Web 套接字之后,我的 API 调用开始失败(下面的屏幕截图)。

观察:我注意到 API 调用在 POST 操作后没有失败。失败发生在我在http://127.0.0.1:5010/subscribe/ 访问API 的地方。也就是说,当我在浏览器中转到http://127.0.0.1:5010/subscribe/时,我看到了如上图所示的失败。

如果我通过删除 Web 套接字的代码来访问 API http://127.0.0.1:5010/subscribe/,则 API 调用工作正常(下面的屏幕截图)

请说明在 Django 中是否可以同时使用 REST API 框架和 Web 套接字。

【问题讨论】:

【参考方案1】:

我猜你在你的情况下使用了错误的 HTTP 请求。

在响应头中,允许的 HTTP 请求是POSTOPTIONS。但是您正试图通过网络浏览器发出GET 请求。

尝试发出POST 请求。

【讨论】:

我编辑了上面的问题。感谢您的输入,但我想问题不在于我调用 POST API 时,而在于访问 API 本身。我附上了上面的截图。

以上是关于同时使用 Django REST 框架和 Web 套接字的主要内容,如果未能解决你的问题,请参考以下文章

django rest框架json web token注销功能

Django REST FRAMEWORK swagger框架详解

Django + AngularJS:没有使用普通 URL 和视图的 Django REST 框架的类 REST 端点?

使用 django-allauth 和 django-rest 框架

django-rest-swagger对API接口注释

在 django-rest-framework 中,是不是可以同时使用 oauth 和 session 身份验证?