使用django-rest-framework-json-api
我能够创建符合文档中描述的API端点。尝试使用django-rest-swagger
提供API文档并不容易。
1:Swagger使用JSON API不支持的media_type = 'application/json'
。为了解决这个问题,我创建了第二个渲染类(renderer_classes
),它对JSON API JSONRenderer
进行子类并强制使用媒体类型。
现在终点支持application/json
和application/vnd.api+json
,并且swagger很乐意在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
答案 0 :(得分:1)
在这里回答我自己的问题,以便其他人可以从中学到的东西中获得价值。我们从未找到解决该问题的解决方案,也没有时间为该项目做出贡献。总的来说,该项目似乎也很挣扎,可能是由于像我们这样的人没有贡献...
现在出现了一个替代项目drf-yasg
,该项目在此原始发布时还不存在。 drf-yasg
相对易于部署并解决了我们所有的问题,因此我们现在已迁移到该项目。
因此,如果您正在寻找DRF中创建的JSON API端点的详尽API文档,那么我建议使用drf-yasg
。
在撰写本文时,不立即支持JSON API,但是有sample code可以使其相对容易地启动和运行。进行此更改后,将自动记录所有端点。
This Github Gist(包含我们应用程序中的代码),希望这对您有所帮助,直到该功能得到全面开发。
答案 1 :(得分:1)
正如您在自己的答案中指出的那样,还有另一种选择:drf-yasg
。这是很棒的软件包,但不支持JSON API 架构。
通过提供所有必要的字段检查器,您甚至最好使用drf-yasg-json-api
为drf-yasg
添加JSON API支持的方法,您只需要稍微扩展{{ 1}}。
查看drf-yasg-json-api Github repo了解详情。
免责声明:我是该软件包的作者。