Django简易json api接口封装。
Project description
django-apis
Django简易json api接口框架。使用pydantic
做接口参数验证。
安装
pip install django-apis
配置项
- DJANGO_APIS_OPENAPI_SERVERS: Swagger服务器列表。
- DJANGO_APIS_OPENAPI_TITLE: Swagger标题。
- DJANGO_APIS_OPENAPI_VERSION: Swagger版本号。
- DJANGO_APIS_OPENAPI_DESCRIPTION: Swagger描述。
- DJANGO_APIS_OPENAPI_SECURITY_DEFINITIONS: Swagger认证列表。
- DJANGO_APIS_OPENAPI_LOGIN_URL: Swagger管理界面访问受管理登录保护。在未登录访问时跳转的登录页面地址。
- DJANGO_APIS_SWAGGER_UI_PATH: Swagger管理界面二级路径(不包括django_apis.urls引入部分)。默认值为
/docs/
。
如何自定义Apiview类型
注意事项
- 定义自己的
base_response_class
,并重置自定义的Apiview
中的base_response_class
属性。 - 重载
Apiview
中的make_response
和make_error_response
方法。
自定义Apiview类型案例
from django.http import JsonResponse
from django_apis.views import Apiview
from typing import Any
import pydantic
class ErrorInfo(pydantic.BaseModel):
code: int = 0
message: str = "OK"
# 响应体格式定义要与make_response及make_error_response实际响应匹配
class ExampleApiviewBaseResponse(pydantic.BaseModel):
success: bool = True
error: ErrorInfo = ErrorInfo()
result: Any = None
class ExampleApiview(Apiview):
base_response_data_field = "result"
base_response_class = ExampleApiviewBaseResponse
def make_response(self, data):
return JsonResponse(
{
"success": True,
"error": {
"code": 0,
"message": "OK",
},
"result": data,
},
json_dumps_params={
"ensure_ascii": False,
},
)
# 强制所有响应的http status_code值为200
def make_error_response(self, code, message, status_code=200):
return JsonResponse(
{
"success": True,
"error": {
"code": code,
"message": message,
},
"result": None,
},
json_dumps_params={
"ensure_ascii": False,
},
)
example_apiview = ExampleApiview()
Swagger认证列表案例
DJANGO_APIS_OPENAPI_SECURITY_DEFINITIONS = {
"BasicAuth": {
"type": "http",
"scheme": "basic",
},
"BearerAuth": {
"type": "http",
"scheme": "bearer",
},
"ApikeyAuth": {
"type": "apiKey",
"name": "X-API-Key",
"in": "header",
},
"OpenID": {
"type": "openIdConnect",
"openIdConnectUrl": "https://example.com/.well-known/openid-configuration",
},
"OAuth2": {
"type": "oauth2",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://example.com/oauth/authorize",
"tokenUrl": "https://example.com/oauth/token",
"scopes": {
"read": "Grants read access",
"write": "Grants write access",
"admin": "Grants access to admin operations",
},
}
},
},
}
使用案例
import pydantic
from django_apis.views import apiview
from django_apis.schemas import OptionalUploadedFiles
@apiview()
def ping() -> str:
return "pong"
class EchoPayload(pydantic.BaseMode):
msg: str
@apiview(methods="post")
def echo(payload: EchoPayload) -> str:
return payload.msg
class ApplyForm(pydantic.BaseMode):
name: str
start_date: str
end_date: str
files: OptionalUploadedFiles
@apiview(methods="post")
def apply(form: ApplyForm) -> bool:
return True
版本记录
v0.2.0
- 注意:不兼容0.1.x。
v0.2.1
- 使用openapi 3.1.0版本.
- 添加并通过更多关于复合模型的测试用例。
v0.2.2
- 通过
DJANGO_APIS_SWAGGER_LOGIN_REQUIRED
配置项控制Swagger管理界面是否受登录保护。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-apis-0.2.2.tar.gz
(13.7 kB
view details)
Built Distribution
File details
Details for the file django-apis-0.2.2.tar.gz
.
File metadata
- Download URL: django-apis-0.2.2.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 208107269b66677f11d88bb61dd8193748500a1bed91d72f54ef24b83e54987b |
|
MD5 | 9387b8d150816fc509af798c67f435af |
|
BLAKE2b-256 | e427a16f86155d95933defd45c327f92eeb0752cf5ca88fa5f619edbaad1abf1 |
File details
Details for the file django_apis-0.2.2-py3-none-any.whl
.
File metadata
- Download URL: django_apis-0.2.2-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2bb8551c4e18a7c4f2ddacc4c2de13f6267daf20e8440bd9de84a6709ddca0e4 |
|
MD5 | 7de6a29399ae365671dcc7359f42070b |
|
BLAKE2b-256 | bf36a9bea6949bb516c2ca5e9c4baad95d5c264b904babe4f4b5dbcd2c977a90 |