DRF Swagger自定义的action文档参数实现
Posted July 04, 2018
这里不讲 DRF(django rest framework) 和 DRS(django rest swagger) 如何结合使用, 在以上两个项目文档中都有相关文档。
在安装完毕后, Swagger 可以自动通过我们锁定一的 serializer 来自动生成各个方法(GET, POST, PUT, DELETE)的coreapi.link
(是一套 REST Docuemnt 描述工具), 这样后在Swagger上就可以根据相关的 Link 识别出所需的参数(Query或者Form)了。
但大多数我们往往需要根据特定的需求, 做一些自定义的接口, 比如使用的 api_view
装饰器定义的函数式视图, 或者使用DRF 中的 action
装饰器定义的自定义接口(在一些较早的DRF版本中为list_route
和detail_route
)。 那么这种情况下, 一些query和定义的 Form 不能直接在 swagger 中很好的展示出来,所以文档性描述接口语言, 在这个时候很是需要。
下面我们对一个接口进行改造, 改造前
form
API VIEW
默认情况下, swagger 不是显示出来这个接口会接受 name
字段.
DRF 的 schema 是控制接口参数架构的组件, 我们基于默认的 AutoSchema 重写一个新的 Schama.
主要逻辑为, 当为函数式视图或者为view 的 action的 endpoint 则通过 yaml 格式的文档描述,其他则通过默认的行为获取接口 link。
然后通过 schama 装饰器对 register 视图覆盖自定义的 AutoSchema 为 CustomViewSchema .
并加上 yaml 描述.
如果是基于 view 的 action 需要在 view 上定义 schema 属性.
这时候, swagger UI 上执行的时候, 就可以显示出来参数的表单了.