Django DRF - Как взаимодействовать с конечной точкой POST с помощью CURL?

Я новичок в Django DRF или в разработке API в целом, пожалуйста, будьте терпеливы со мной ;) Помимо некоторых чистых представлений API get, я теперь хочу настроить мою первую конечную точку, куда я могу отправлять данные, поэтому я решил пойти по пути изменения пароля пользователя. Вот что я сделал на данный момент:

views.py

@api_view(['GET', 'POST'])
@authentication_classes([JSONWebTokenAuthentication])
@permission_classes([IsAuthenticated])
def update_user(request):
    if request.method == 'GET':
        serializer = UserSerializer(request.user)
        return Response(serializer.data, status=status.HTTP_200_OK)

    elif request.method == 'POST':
        serializer = UserSerializer(request.user, data=request.data, partial=True)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data, status=status.HTTP_200_OK)

serializers.py

class UserSerializer(serializers.ModelSerializer):
    id = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
    password = serializers.CharField(
        max_length=128,
        min_length=8,
        write_only=True
    )

    class Meta:
        model = User
        fields = ('id', 'user', 'password', 'pin', 'avatar')
        read_only_fields = ('id', 'user')

    def update(self, instance, validated_data):
        password = validated_data.pop('password', None)
        for (key, value) in validated_data.items():
            setattr(instance, key, value)
        if password is not None:
            instance.set_password(password)
        instance.save()
        return instance

Теперь вопрос в том, как я могу обновить ссылающиеся поля, такие как "pin" или особенно "password", используя curl.

Первое, что я всегда делаю, это получаю новый токен, например, такой:

curl -X POST -d "user=admin&password=admin" http://localhost/api/v1/token/obtain
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiYWYzN2RiODUtYjU5Yy00YjRmLWFhNjYtMDExNGFmYWQ4ZDdiIiwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTYzNDE3Mjg3MiwidXNlciI6ImFkbWluIiwib3JpZ19pYXQiOjE2MzQxMjk2NzJ9.zz9Zyai3Y7MhR_chGkzA6jXY_BdjN5Eu2muRvyWIppw"}

Теперь я могу получить доступ к конечной точке update_user, но я не понимаю, как взаимодействовать с ней с помощью curl или какого-нибудь модного расширения для браузера. Может кто-нибудь подсказать?

Я предлагаю использовать postman для тестирования ваших API. Это очень просто, вам нужно только указать необходимые заголовки и тело и отправить.

Вы также можете посмотреть команды/код для curl, python, nodejs и т.д. для выполнения api вызова с заголовками и телом, которые вы добавили в postman.

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