从用django rest框架生成的api生成openapi兼容模式的实用程序
drf-openapi的Python项目详细描述
==
drf openapi
==
图片::https://img.shields.io/pypi/v/drf_openapi.svg
:目标:https://pypi.python.org/pypi/drf_openapi
图片::https://img.shields.io/travis/limdauto/drf_openapi.svg
:目标:https://travis ci.org/limdauto/drf_openapi
图片::https://readthedocs.org/projects/drf-openapi/badge/?version=latest
:目标:https://drf-openapi.readthedocs.io/en/latest/?徽章=最新
:alt:文档状态
…图片::https://pyup.io/repos/github/limdauto/drf廑openapi/shield.svg
:目标:https://pyup.io/repos/github/limdauto/drf廑openapi/
:alt:updates
。图片::https://badges.gitter.im/drf_openapi/lobby.svg
:目标:https://gitter.im/drf_openapi/lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr badge&utm_content=badge
:alt:join the chat at https://gitter.im/drf_openapi/lobby
从使用django rest framework制作的api生成与openapi兼容的架构。使用"redoc<;https://github.com/rebilly/redoc>;``作为默认接口,而不是虚张声势。
API版本更改日志和方法特定架构定义的一级支持。
图::https://raw.githubusercontent.com/limdauto/drf_openapi/master/images/screenshot.png
:比例:80%
……内容:
1.背景
----
django rest framework有一个"api模式生成/声明机制"<;http://www.django-rest-framework.org/api-guide/schemas/>;``由
`coreapi<;http://www.coreapi.org/>;``标准提供。当前的生态系统有两个问题:
-coreapi与"openapi<;https://www.openapis.org/>;"这是一个更受欢迎的api标准,具有出色的工具支持,也就是说,swagger等人
-coreapi团队提供的openapi编解码器(兼容层)不支持许多有用的openapi特性。
-不支持版本控制或特定于方法的模式。
2.要求:
————
高级需求如下:
-可以放入任何现有的drf项目中,而无需进行任何代码更改。
-在请求架构和响应架构之间提供清晰的描述。
-为每个架构提供版本控制机制。支持按版本范围语法定义架构,例如:code:`>;1.0,<;=2.0`
-支持多个响应代码,而不仅仅是:code:`200`
-所有这些信息都应绑定到视图方法,而不是视图类。
强调非侵入性要求很重要,尤其是当drf自己决定正式支持openapi时,我想尽量减少我必须做的改变。设计
----
-架构是从"序列化程序"自动生成的<;http://www.django-rest-framework.org/api-guide/serializers/>;`\br/>*从现在起,:代码:`schema`和:代码:`serializer`可交互使用
-扩展支持版本化架构:代码:`versionedserializers`.
-元数据(即版本控制、响应和请求架构)通过:代码:`view_config`装饰符绑定到视图方法。
-其他架构信息(如响应状态代码及其说明)绑定到序列化程序:代码:`meta`类
-可以选择提供自动响应验证:代码:`view_config(response_serializer=foosserializer,validate_response=true)`
4。约束条件
----
当前drf openapi只支持启用了'versioning<;http://www.django-rest-framework.org/ap i-guide/versioning/'urlpathversioning>;``的drf项目。
我只测试了'urlpathversioning<;http://www.django-rest-framework.org/api-guide/versioning/urlpathversioning>;``但是我打算支持drf支持的所有版本控制方案。
5。示例
----
示例/>;`.
>6.许可证
----
mit
==
=
history
=
>0.1.0(2017-07-01)
----
*在PYPI上首次发布。
<0.7.0(2017-07-28)
----
*实现:代码:`versionedserizer`
*实现:代码:`view_config`
*使库成为一个可安装的django应用程序
0.8.0(2017-07-28)
----
*一些小的修复以确保它在通用项目上工作
*添加示例
0.8.1(2017-07-28)
----
*修复解析空的错误序列化程序的docstring
<0.9.0(2017-07-28)
----
*重命名基:代码:`versionedserializer`转换为:代码:`versionedserizers`
<0.9.1(2017-07-28)
----
*修复重命名后的导入问题
<0.9.3(2017-08-05)添加对不同响应状态代码的支持(`issue 27<;https://github.com/limdauto/drf廑openapi/issues/27>;``````>
0.9.5(2017-08-12)
----
*添加python 2.7兼容性(感谢`tuffnaty<;https://github.com/limdauto/drf廑openapi/pull/35>;`廑
*添加对ModelViewset的支持(感谢'tuffnaty<;https://github.com/limdauto/drf廑openapi/pull/36>;`)
0.9.6(2017-08-12)
----
*修复ListSerializer/ListField的子级的类型显示(`issue 28<;https://github.com/limdauto/drf庠openapi/issues/28>;`)
0.9.7(2017-09-12)
----
*提高架构视图的权限(`issue 31<;https://github.com/limdauto/drf懔openapi/issues/31>;`)
0.9.8(2017-10-01)
----
*将架构视图转换为基于类的视图,以便更轻松地进行自定义
0.9.9(2017-10-01)
----
*ListSerializer/ListField的另一个修复程序(`Issue 28<;https://github.com/limdauto/drf廑openapi/issues/28>;`````>
1.0.1(2017-12-14)
-------
*fix drf 3.7兼容性问题
*作为维护者添加(`werwty<;https://github.com/werwty>;```u1.1.0(2017-12-14)
--
*fix viewset没有分页类(`issue 84<;https://github.com/limdauto/drf_openapi/issues/84>;``)和(`issue 92<;https://github.com/limdauto/drf_openapi/issues/92>;``)的
1.2.0(2017-12-20)
----
*使序列化器类成为可选(`issue 57<;https://github.com/limdauto/drf_openapi/issues/57>;``廑)
drf openapi
==
图片::https://img.shields.io/pypi/v/drf_openapi.svg
:目标:https://pypi.python.org/pypi/drf_openapi
图片::https://img.shields.io/travis/limdauto/drf_openapi.svg
:目标:https://travis ci.org/limdauto/drf_openapi
图片::https://readthedocs.org/projects/drf-openapi/badge/?version=latest
:目标:https://drf-openapi.readthedocs.io/en/latest/?徽章=最新
:alt:文档状态
…图片::https://pyup.io/repos/github/limdauto/drf廑openapi/shield.svg
:目标:https://pyup.io/repos/github/limdauto/drf廑openapi/
:alt:updates
。图片::https://badges.gitter.im/drf_openapi/lobby.svg
:目标:https://gitter.im/drf_openapi/lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr badge&utm_content=badge
:alt:join the chat at https://gitter.im/drf_openapi/lobby
从使用django rest framework制作的api生成与openapi兼容的架构。使用"redoc<;https://github.com/rebilly/redoc>;``作为默认接口,而不是虚张声势。
API版本更改日志和方法特定架构定义的一级支持。
图::https://raw.githubusercontent.com/limdauto/drf_openapi/master/images/screenshot.png
:比例:80%
……内容:
1.背景
----
django rest framework有一个"api模式生成/声明机制"<;http://www.django-rest-framework.org/api-guide/schemas/>;``由
`coreapi<;http://www.coreapi.org/>;``标准提供。当前的生态系统有两个问题:
-coreapi与"openapi<;https://www.openapis.org/>;"这是一个更受欢迎的api标准,具有出色的工具支持,也就是说,swagger等人
-coreapi团队提供的openapi编解码器(兼容层)不支持许多有用的openapi特性。
-不支持版本控制或特定于方法的模式。
2.要求:
————
高级需求如下:
-可以放入任何现有的drf项目中,而无需进行任何代码更改。
-在请求架构和响应架构之间提供清晰的描述。
-为每个架构提供版本控制机制。支持按版本范围语法定义架构,例如:code:`>;1.0,<;=2.0`
-支持多个响应代码,而不仅仅是:code:`200`
-所有这些信息都应绑定到视图方法,而不是视图类。
强调非侵入性要求很重要,尤其是当drf自己决定正式支持openapi时,我想尽量减少我必须做的改变。设计
----
-架构是从"序列化程序"自动生成的<;http://www.django-rest-framework.org/api-guide/serializers/>;`\br/>*从现在起,:代码:`schema`和:代码:`serializer`可交互使用
-扩展支持版本化架构:代码:`versionedserializers`.
-元数据(即版本控制、响应和请求架构)通过:代码:`view_config`装饰符绑定到视图方法。
-其他架构信息(如响应状态代码及其说明)绑定到序列化程序:代码:`meta`类
-可以选择提供自动响应验证:代码:`view_config(response_serializer=foosserializer,validate_response=true)`
4。约束条件
----
当前drf openapi只支持启用了'versioning<;http://www.django-rest-framework.org/ap i-guide/versioning/'urlpathversioning>;``的drf项目。
我只测试了'urlpathversioning<;http://www.django-rest-framework.org/api-guide/versioning/urlpathversioning>;``但是我打算支持drf支持的所有版本控制方案。
5。示例
----
示例/>;`.
>6.许可证
----
mit
==
=
history
=
>0.1.0(2017-07-01)
----
*在PYPI上首次发布。
<0.7.0(2017-07-28)
----
*实现:代码:`versionedserizer`
*实现:代码:`view_config`
*使库成为一个可安装的django应用程序
0.8.0(2017-07-28)
----
*一些小的修复以确保它在通用项目上工作
*添加示例
0.8.1(2017-07-28)
----
*修复解析空的错误序列化程序的docstring
<0.9.0(2017-07-28)
----
*重命名基:代码:`versionedserializer`转换为:代码:`versionedserizers`
<0.9.1(2017-07-28)
----
*修复重命名后的导入问题
<0.9.3(2017-08-05)添加对不同响应状态代码的支持(`issue 27<;https://github.com/limdauto/drf廑openapi/issues/27>;``````>
0.9.5(2017-08-12)
----
*添加python 2.7兼容性(感谢`tuffnaty<;https://github.com/limdauto/drf廑openapi/pull/35>;`廑
*添加对ModelViewset的支持(感谢'tuffnaty<;https://github.com/limdauto/drf廑openapi/pull/36>;`)
0.9.6(2017-08-12)
----
*修复ListSerializer/ListField的子级的类型显示(`issue 28<;https://github.com/limdauto/drf庠openapi/issues/28>;`)
0.9.7(2017-09-12)
----
*提高架构视图的权限(`issue 31<;https://github.com/limdauto/drf懔openapi/issues/31>;`)
0.9.8(2017-10-01)
----
*将架构视图转换为基于类的视图,以便更轻松地进行自定义
0.9.9(2017-10-01)
----
*ListSerializer/ListField的另一个修复程序(`Issue 28<;https://github.com/limdauto/drf廑openapi/issues/28>;`````>
1.0.1(2017-12-14)
-------
*fix drf 3.7兼容性问题
*作为维护者添加(`werwty<;https://github.com/werwty>;```u1.1.0(2017-12-14)
--
*fix viewset没有分页类(`issue 84<;https://github.com/limdauto/drf_openapi/issues/84>;``)和(`issue 92<;https://github.com/limdauto/drf_openapi/issues/92>;``)的
1.2.0(2017-12-20)
----
*使序列化器类成为可选(`issue 57<;https://github.com/limdauto/drf_openapi/issues/57>;``廑)