Как выдать удобное для пользователя сообщение об ошибке, если валидация не прошла для параметров запроса в django
Я пишу API на Django, и URL имеет вид foo.com/api/places?city_id=123 Так вот, здесь мой query_param - это city_id, и мой API должен принимать только целые числа, если query_param будет отправлен как city_id="xyz", то мой API должен отправить какое-то удобное для пользователя сообщение вместо 500. Могу ли я узнать, как этого добиться в Django?
Вы можете сделать это двумя способами.
Метод 1
Вы можете отправить ответ с кодом ошибки следующим образом
if not request.query_params.get('city_id').isdigit():
return Response({'message': 'Your message here'}, status=your_error_code_here)
Метод 2
Вы можете сделать сериализатор для проверки параметров запроса.
class ParamValidationSerializer(serializers.Serializer):
city_id = serializers.IntegerField(error_messages={'invalid': 'Your message here'})