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.