从用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>;``廑)



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
打开OrientDB数据库时发生java错误   java Hibernate合并函数偶尔会导致主键冲突   java如何在SourceTransferndexit将msg放入MQ   JavaEclipse不正确地导入项目   Java中的数据结构,带有删除节点后所有节点的操作   java创建zip存档时,什么构成重复条目   java如何计算所有值并比较每个对象?   java Threadflipbegin在Google Pixel 3上被阻止55秒   java Eclipse Hibernate:未找到适合jdbc的驱动程序:mysql://localhost:3306/hibernatedb   java Quartz计划程序未运行   java如何从junit扩展向@Test返回值?   java忽略搜索字段中的大小写   java如何从图库中选取图像,裁剪并保存在数据分区中   java CST/CDT时区更改问题   url从Java读取Twitter页面   java是否要在每个列表项中打开WebView单击?   比较输入值的Java布尔逻辑初学者   如何在服务器端使用java从客户端的HTTP POST请求接收和解析JSON对象   javascript在一个get请求中,如何启动程序,然后使用另一个get请求停止它?