← Back to list

Django 結合 ReDoc API 文件編寫

先前介紹 Swagger 可視化的 API 文件,允許直接在瀏覽器上查看 API 文檔,並且可以進行 API 測試,而ReDoc 的設計比較簡潔,適合用來閱讀 API 文件,但不像 Swagger UI 那樣支援直接測試 API。

Johnny Chen · 2025-03-09 11:41 · 0 claps · 4.9 min read
#redoc #django #swagger
Open on Medium ↗
Wiki topics: 🌐 · Web Development

Django 結合 ReDoc API 文件編寫

先前介紹 Swagger 可視化的 API 文件,允許直接在瀏覽器上查看 API 文檔,並且可以進行 API 測試,而ReDoc 的設計比較簡潔,適合用來閱讀 API 文件,但不像 Swagger UI 那樣支援直接測試 API。

引入方式同Swagger,可參考編寫Swagger API文件引入。

  • /schema/ 提供原始的 OpenAPI JSON Schema,供 Swagger、ReDoc 或其他工具解析。
  • /swagger/ 提供互動式 API 文檔,允許發送 API 請求。
  • /redoc/ 提供簡潔的 API 文件,適合閱讀但不能直接測試 API。
# urls.py

from drf_spectacular.views import (
    SpectacularAPIView,
    SpectacularRedocView,
    SpectacularSwaggerView,
)

from django.urls import path, include

urlpatterns = [
    path("", include("api.urls")),
]

urlpatterns += [
    path("schema/", SpectacularAPIView.as_view(), name="schema"),
    path(
        "swagger/",
        SpectacularSwaggerView.as_view(url_name="schema"),
        name="schema-swagger-ui",
    ),
    path(
        "redoc/",
        SpectacularRedocView.as_view(url_name="schema"),
        name="schema-redoc",
    ),
]

根據對應網址輸入 http://localhost:8000/redoc/ 察看Redoc API文檔。

左半部為API 、中間為詳細文件說明、右半部為接口與回應訊息

在Django中,可透過 View、Filter、Serializer、Model 等 help_Text 加入說明,使 ReDoc 加入 Require 等標註。

ex : 在 Filter 與 Serializer 、Mixin 加入說明。

# filter.py

class PermissionExpFilter(FilterSet):
    employee_name = django_filters.CharFilter(required=False,
 field_name='employee_name', 
 lookup_expr='icontains',
 help_text="測試用employee_name_20250309") # 加入說明

# Serializer.py
class PermissionExpSerializer(serializers.ModelSerializer):
    employee_name = serializers.CharField(max_length=255,
 required=True, # Redoc 會以紅色標註 Required 欄位
help_text="測試用employee_name_20250309") # 加入說明

# Views.py 掛上 schema
from utils.swagger import swagger_model_viewset_extend_schema
@swagger_model_viewset_extend_schema(name="PermissionExp")
class PermissionExpViewSet(PermissionExpMixin,ModelViewSet):
    queryset = PermissionExpModel.objects.all()
    serializer_class = PermissionExpSerializer
    filterset_class = PermissionExpFilter

前端可透過該文件了解對接需求與欄位說明。

除了欄位說明外,也可編輯 Response 回應格式,可透過extend_schema編寫回應格式,需要批量套用API時可使用Mixin模式。

class CustomSchemaMixin:
    """
    Mixin 用於統一 API 文件 (Swagger/ReDoc) 的回應格式
    """
@extend_schema(
        responses={
            200: OpenApiResponse(
                response=None,
                description="成功獲取列表",
                examples=[
                    {
                        "status": "success",
                        "code": 200,
                        "message": "獲取權限列表成功",
                        "data": []
                    }
                ],
            ),
            400: OpenApiResponse(
                response=None,
                description="請求格式錯誤",
                examples=[
                    {
                        "status": "error",
                        "code": 400,
                        "message": "請求參數無效",
                        "errors": {"field_name": ["錯誤描述"]}
                    }
                ],
            ),
        }
    )

回應文件 :

透過該文件使前後端串接流程更加順利,加速整體開發專案流程。


메타데이터
post_id
60ca0861aa2c
slug
django-結合-redoc-api-文件編寫-60ca0861aa2c
url
https://medium.com/@a0931992912/django-%E7%B5%90%E5%90%88-redoc-api-%E6%96%87%E4%BB%B6%E7%B7%A8%E5%AF%AB-60ca0861aa2c
canonical_url
https://medium.com/@a0931992912/django-%E7%B5%90%E5%90%88-redoc-api-%E6%96%87%E4%BB%B6%E7%B7%A8%E5%AF%AB-60ca0861aa2c
author_url
https://medium.com/@a0931992912
status
ok
fetched_at
2026-07-20 17:49:03