Может ли APIView группировать несколько методов GET и POST?

Я реализую API для игры, используя DRF представления (точнее APIViews). Я понял, как использовать более одного сериализатора для представления, но мне нужно, чтобы это представление объединяло несколько моделей, и я думаю, что мне нужно более одного метода GET, а также более одного метода POST. Возможно ли это вообще? Пока что мой код выглядит следующим образом:

class GameView(APIView):
    """
    API View that retrieves the game, allows users to post stuff and finally a game session is posted as well once the 5 game rounds have been completed
    """
    serializer_class = GametypeSerializer
    serializer_class = GamesessionSerializer
    serializer_class = GameroundSerializer

    serializer_class = ResourceSerializer
    serializer_class = VerifiedLabelSerializer
    serializer_class = LabelSerializer

    def get_serializer_class(self):
        if self.request.method == 'POST':
            return YOUR_SERIALIZER_1
        elif self.request.method == 'GET':
            return YOUR_SERIALIZER_2
        else:
            return YOUR_DEFAULT_SERIALIZER

    def get_queryset(self):

        gametypes = Gametype.objects.all().filter(name="labeler")

        return gametypes

    def get(self, request, *args, **kwargs):
        # gets a resource and an empty game round object to be completed (according to the game type chosen by the user)

    def post(self, request, *args, **kwargs):
        # users post a label, that is saved in the label model, a verified model is saved in the verified label model. Once 2 game rounds have been completed, a game session is posted.

Думаю, стоит упомянуть, что я планирую использовать один url для этого. Это должно работать так: пользователь нажимает на тип игры, затем вызывается это представление, начинается игра и обрабатывается все, что должно быть обработано во время игры.

Если вы действительно хотите использовать только один url, вы можете сделать это с помощью параметров GET.

def get(self, request, *args, **kwargs):
    model = request.GET.get("model")
    if model == "Gametype":
        .. do something with the Gametype model ..
    elif model == "Resource":
        .. do something with the Resource model ..

то же самое для get_serializer_class(), чтобы вы знали, какой сериализатор использовать.

Тогда вы вызовете /gameview/?model=Gametype или /gameview/?model=Resource

Но что плохого в использовании нескольких адресов?

Вернуться на верх