Я столкнулся с проблемой, связанной с тем, что приложения API отличаются друг от друга, при этом все еще можно использовать API для просмотра для навигации.
Ранее я использовал отдельный файл routers.py
в моем основном приложении, содержащем следующее расширение DefaultRouter
.
class DefaultRouter(routers.DefaultRouter):
def extend(self, router):
self.registry.extend(router.registry)
После этого добавляются другие маршрутизаторы приложений следующим образом:
from . routers import DefaultRouter
from app1.urls import router as app1_router
# Default Router
mainAppRouter = DefaultRouter()
mainAppRouter.extend(app1_router)
где app1_router
- новый объект SimpleRouter
.
Теперь проблема возникает, когда я хочу изменить SimpleRouter
и создать свой собственный App1Router
, например этот
class App1Router(SimpleRouter):
routes = [
Route(
url = r'^{prefix}{trailing_slash}$',
mapping = {
'get': 'retrieve',
'post': 'create',
'patch': 'partial_update',
},
name = '{basename}-user',
initkwargs = {}
),
]
Это не будет правильно обрабатывать мое расширение. В качестве примера GET
и PATCH
не распознаются как разрешенные методы всякий раз, когда я расширяю маршрутизатор, но когда я не расширяюсь, но использую только настраиваемый маршрутизатор, все работает нормально.
Мой вопрос заключается в том, как я могу обрабатывать расширение настраиваемых маршрутизаторов по отдельным приложениям, но при этом поддерживать хороший API-интерфейс для просмотра?