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 django_apis.schemas import ResponseBase
from typing import Any
import pydantic
class ErrorInfo(pydantic.BaseModel):
code: int = 0
message: str = "OK"
# 响应体格式定义要与make_response及make_error_response实际响应匹配
class ExampleApiviewResponseBase(ResponseBase):
success: bool = True
error: ErrorInfo = ErrorInfo()
result: Any = None
class ExampleApiview(Apiview):
base_response_data_field = "result"
base_response_class = ExampleApiviewResponseBase
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管理界面是否受登录保护。
v0.2.3
- 使用typing.Union以兼容python3.9。
v0.2.4
- 为接口添加security字段。
v0.2.5
- query字段添加default支持。
v0.2.6
- get_response_schema结果必须为ResponseBase子类,否则均使用make_generic_response_type进行动态生成。
v0.2.8
- 修正:是否为HttpResponseBase实例判断错误的问题。
v0.2.10
- 添加:django_apis.helper.auth模型,提供http_bearer_auth_protect、http_basic_auth_protect、apikey_auth_protect等认证验证方法。
- 添加:视图级的tags定义支持。
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.10.tar.gz
(15.5 kB
view details)
Built Distribution
File details
Details for the file django-apis-0.2.10.tar.gz
.
File metadata
- Download URL: django-apis-0.2.10.tar.gz
- Upload date:
- Size: 15.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b8f52eb05b15715d035ddd411a9bf4460f6f84e2dd9bb1c6e1701ed3a11d1c3 |
|
MD5 | a1beea59170a9d2ed97ba58857cbd6ad |
|
BLAKE2b-256 | 2afacbfab31aa688ebb6efd0ed001203044155bef96872192582870b2d73f909 |
File details
Details for the file django_apis-0.2.10-py3-none-any.whl
.
File metadata
- Download URL: django_apis-0.2.10-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b8c8aa405cca3690f1d69c58a88a818489273a6acdbf7cfa1e84949f087db5b |
|
MD5 | 7563f3599794720426a5cfd4747d129f |
|
BLAKE2b-256 | 0c07f87981676edb40f156afb9107d6361cc7e1f2ae93eaff6011454841ce09a |