5

使用django-rest-framework-json-api我能够创建 API 端点,其工作方式如文档中所述。尝试提供 API 文档使用django-rest-swagger并不容易。

media_type = 'application/json'1:在 JSON API 中不支持的Swagger 使用。为了解决这个问题,我创建了第二个渲染类 ( renderer_classes),它对 JSON API 进行子类化JSONRenderer并强制使用媒体类型。

现在端点支持application/json并且application/vnd.api+jsonswagger 很乐意在 JSON API 文档结构中呈现。请注意,生成的 curl 请求没有标准的 JSON API 标头。

2:Swagger 与解析器有同样的问题。虽然第 1 期的工作确实有效,但还有一个次要挑战。Swagger 呈现一个字段名称的平面字典,它不是 JSON API,最终由 DRF 请求。

是否有可能在 JSON API 中大摇大摆地解析?目前 Swagger 不适用于 PUT 或 POST。

djangorestframework-jsonapi==2.2.0
djangorestframework==3.5.4
Django==1.11.2
coreapi==2.3.1
python 3.6
4

2 回答 2

1

在这里回答我自己的问题,以便其他人可以从所学内容中获得价值。我们从未找到解决此问题的方法,也没有时间为该项目做出贡献。总的来说,该项目似乎也在苦苦挣扎,也许是因为像我们这样的人没有做出贡献……

现在出现了一个替代项目drf-yasg,该项目在最初发布时不存在。drf-yasg相对容易部署并解决了我们所有的问题,所以我们现在已经迁移到这个项目。

因此,如果您正在寻找在 DRF 中创建的 JSON API 端点的 swagger api 文档,那么我建议您使用drf-yasg.

在编写 JSON API 时,不支持开箱即用,但有示例代码可以相对轻松地启动和运行它。进行此更改后,所有端点都将自动记录。

这个 Github Gist包含来自我们应用程序的代码,希望在此功能完全开发之前对您有所帮助。

于 2019-04-23T01:16:45.620 回答
1

正如您在自己的答案中指出的那样,还有另一种选择:drf-yasg. 这是一个很棒的包,但不支持开箱即用的 JSON API 模式。

通过提供所有必要的字段检查器,您可以更好地使用drf-yasg-json-api 添加 JSON API 支持的方式drf-yasg,您只需要稍微扩展您的SWAGGER_SETTINGS.

查看drf-yasg-json-api Github repo了解详细信息。

免责声明:我是这个包的作者。

于 2020-04-22T16:21:03.203 回答