來呀~
歡迎關注我的公衆號「測試遊記」
生成API文檔
coreapi
Pygments
Markdown
安裝
$ pip install coreapi
$ pip install Pygments
$ pip install Markdown
使用coreapi
DRF框架(>3.10)需要添加
指定用於支持coreapi的shcema
REST_FRAMEWORK = {
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}
在 LearnDjango/urls.py
添加
from django.contrib import admin
from django.urls import path, include, re_path
from rest_framework.documentation import include_docs_urls
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('interfaces.urls')),
path('', include('projects.urls')),
path('docs/', include_docs_urls(title='測試平臺接口文檔',
description='這是一個接口文檔平臺'))
]
查看效果
添加註釋
單一方法的視圖
直接給視圖類添加註釋
多個方法的視圖
class ProjectsListCreateViewSet(ListCreateAPIView):
"""
get:
返回所有項目信息
post:
新建項目
"""
視圖集
class ProjectsViewSet(viewsets.ModelViewSet):
"""
create:
創建項目
retrieve:
獲取項目詳情數據
update:
完整更新項目
partial_update:
部分更新項目
destroy:
刪除項目
list:
獲取項目列表數據
names:
獲取所有項目名稱
interfaces:
獲取指定項目的所有接口數據
"""
使用drf-yasg
支持swagger
$ pip install drf-yasg
添加到 INSTALLED_APPS
中
INSTALLED_APPS = [
...
'drf_yasg'
...
]
在 LearnDjango/urls.py
中添加以下部分
from django.contrib import admin
from django.urls import path, include, re_path
from rest_framework.documentation import include_docs_urls
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
schema_view = get_schema_view(
openapi.Info(
title='API接口文檔',
default_version='v1',
description='這是一個接口文檔平臺',
# terms_of_service='http://api.xxx.com',
contact=openapi.Contact(email='[email protected]'),
license=openapi.License(name='BSD License')
),
public=True
)
urlpatterns = [
re_path(r'^swagger(?P<format>\.json|\.yaml)$',
schema_view.without_ui(cache_timeout=0), name='schema-json'),
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger'),
path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc')
]
訪問:
http://127.0.0.1:8000/swagger.json
返回json格式數據
訪問
http://127.0.0.1:8000/swagger.yaml
會自動下載一份yaml文件
訪問
http://127.0.0.1:8000/swagger/
訪問
http://127.0.0.1:8000/redoc/
開始項目
創建項目
添加日誌器
ApiTest/settings.py
中添加
LOGGING = {
'version': 1,
'disable_exising_loggers': False,
'formatters': {
'verbose': {
'format': '%(asctime)s - [%(levelname)s] - [msg]%(message)s'
},
'simple': {
'format': '%(asctime)s - [%(levelname)s] - %(name)s - [msg]%(message)s - [%(filename)s:%(lineno)d ]'
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'logs/mytest.log'), # 日誌文件的位置
'maxBytes': 100 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': {
'mytest': { # 定義了一個名爲mytest的日誌器
'handlers': ['console', 'file'],
'propagate': True,
'level': 'DEBUG' # 日誌器接收的最低日誌級別
}
}
}
用戶模塊
創建user子應用
manage.py@ApiTest > startapp user
添加INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user.apps.UserConfig',
]