api接口扩展接口

class cool.views.ErrorCode

错误码管理,通过 API_ERROR_CODES 中配置

class cool.views.CoolAPIException[源代码]

api异常基类,返回格式化结果数据

class cool.views.CoolPermissionAPIException[源代码]

权限错误

class cool.views.ResponseData[源代码]

返回数据包装

class cool.views.BaseSerializer[源代码]

序列化基类,文件字段会自动生成全路径url,property字段会用doc生成label或help_text

class TreeSerializer1(self):
    children = ListField(child=RecursiveField())

class TreeSerializer2(self):
    children = RecursiveField(many=True, allow_empty=True)

class TestSerializer2(self):
    parent = RecursiveField(allow_null=True)
class cool.views.ViewSite[源代码]

APIView class 管理类

cool.views.get_api_doc(request=None, template_name='cool/views/api_doc.md', base_view=<class 'cool.views.view.CoolBFFAPIView'>, exclude_params=(), exclude_base_view_params=True, exclude_views=())[源代码]

生成api文档

参数:
  • request – 请求request
  • template_name – 接口模板
  • base_view – 接口视图基类
  • exclude_params – 排除参数
  • exclude_base_view_params – 是否排除基类中参数
  • exclude_views – 排除接口视图
cool.views.get_api_doc_html(request, *args, md_template_name='cool/views/api_doc.md', base_view=<class 'cool.views.view.CoolBFFAPIView'>, exclude_params=(), exclude_base_view_params=True, exclude_views=(), title='Api Document', toc_left=True, **kwargs)[源代码]

生成api文档(markdown转html,依赖markdown)

参数:
  • request – 请求request
  • md_template_name – 接口模板
  • base_view – 接口视图基类
  • exclude_params – 排除参数
  • exclude_base_view_params – 是否排除基类中参数
  • exclude_views – 排除接口视图
  • title – 文档标题
  • toc_left – 宽浏览器中目录显示在左侧
urlpatterns = [
    path('api_doc.html', get_api_doc_html)
]
cool.views.get_api_info(base_view=<class 'cool.views.view.CoolBFFAPIView'>, base_params=(), add_base_view_params=True, exclude_views=())[源代码]

获取api接口信息

参数:
  • base_view – 接口视图基类
  • base_params – 公共参数
  • add_base_view_params – 基类中参数增加到公共参数
  • exclude_views – 排除接口视图

返回格式:

{
    'exclude_params': ['排除字段列表'],
    'error_codes': [{'tag': '错误码标签', 'code': '错误码', 'desc': '错误码描述'}],
    'apis': [
        {
            'name': '接口名称',
            'url': '接口url',
            'ul_name': '接口唯一标识(可以用于函数名)',
            'info': {
                'request_info': '请求参数列表',
                'response_info': '返回数据结构',
                'response_info_format': '返回数据结构json格式化'
            },
            'suggest_method': '建议请求方式',
            'content_type': '建议使用content_type'
        }
    ]
}
class cool.views.CoolBFFAPIView[源代码]

Backend For Frontend APIView

SYSTEM_ERROR_STATUS_CODE

默认值为 API_SYSTEM_ERROR_STATUS_CODE

PARAM_ERROR_STATUS_CODE

默认值为 API_PARAM_ERROR_STATUS_CODE

SUCCESS_WITH_CODE_MSG

默认值为 API_SUCCESS_WITH_CODE_MSG

SHOW_PARAM_ERROR_INFO

默认值为 API_SHOW_PARAM_ERROR_INFO

response_info_serializer_class

返回结果序列化类

response_many

返回结果是否为列表

support_methods

支持的请求类型 默认值为 (“get”, “post”)

get_context(request, *args, **kwargs)[源代码]

编写业务逻辑

参数验证通过后会请求该接口,request.params 为解析后参数内容

class cool.views.options.ViewOptions

CoolBFFAPIViewMeta 接口

path

URL 地址,不填会以类名自动生成

param_fields
  • 接口参数列表,自动继承付类参数列表,接口文档会自动通过该参数生成
  • 请求之前会先判断所有参数约束,不符合规范的会直接报错,所有验证通过后会调用 get_context() 接口。
class cool.views.PageMixin[源代码]

分页返回数据Mixin

PAGE_SIZE_MAX

每页条数参数(page_size)最大限制 默认`200`

DEFAULT_PAGE_SIZE

每页条数参数(page_size)默认值 默认`100`

‘AddMixin’, ‘DeleteMixin’, ‘EditMixin’, ‘ExtManyToOneMixin’, ‘SearchListMixin’, .. autoclass:: SearchListMixin() .. autoclass:: AddMixin() .. autoclass:: DeleteMixin() .. autoclass:: EditMixin() .. autoclass:: ExtManyToOneMixin()

cool.views.PAGE_SIZE_MAX

每页条数参数(page_size)最大限制 默认`200`

cool.views.DEFAULT_PAGE_SIZE

每页条数参数(page_size)默认值 默认`100`