Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erreur 500 lors d'une requête HEAD sur /api/membres/ #6580

Open
philippemilink opened this issue Feb 11, 2024 · 0 comments
Open

Erreur 500 lors d'une requête HEAD sur /api/membres/ #6580

philippemilink opened this issue Feb 11, 2024 · 0 comments
Labels
C-API Concerne une API du site C-Back Concerne le back-end Django S-BUG Corrige un problème

Comments

@philippemilink
Copy link
Member

Description du bug

Sentry nous rapporte qu'en faisant une requête HEAD sur la route /api/membres/, on obtient une erreur 500 :

TypeError: 'NoneType' object is not callable
[...]
  File "zds/member/api/views.py", line 115, in get
    return self.list(request, *args, **kwargs)
  File "rest_framework/mixins.py", line 42, in list
    serializer = self.get_serializer(page, many=True)
  File "rest_framework/generics.py", line 110, in get_serializer
    return serializer_class(*args, **kwargs)

De ce que j'ai compris, ça vient du fait que la méthode get_serializer_class() ne renvoie rien (donc None) si la requête n'est pas GET ou POST :

def get_serializer_class(self):
if self.request.method == "GET":
return ProfileListSerializer
elif self.request.method == "POST":
return ProfileCreateSerializer

Comment reproduire ?

curl --head http://127.0.0.1:8000/api/membres/

Comportement attendu

Pas une erreur 500.

Je ne sais pas comment traiter ce problème. Est-ce qu'il faut interdire toutes les requêtes HEAD ? Dans ce cas y a-t-il quelque part un paramètre qui permet de faire ça pour toute l'API ? (je ne suis même pas sûr que ce soit souhaitable...) Est-ce qu'il faut simplement traiter le cas si la requête est de type HEAD dans get_serializer_class() ? Dans ce cas quelle donnée on renvoie ?

Si on fait une requête HEAD sur la route qui donne les infos d'un membre en particulier, on n'obtient pas une 500, mais une belle 200 OK...

@philippemilink philippemilink added S-BUG Corrige un problème C-Back Concerne le back-end Django C-API Concerne une API du site labels Feb 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-API Concerne une API du site C-Back Concerne le back-end Django S-BUG Corrige un problème
Projects
Status: À traiter
Development

No branches or pull requests

1 participant