簡體   English   中英

Django DRF - 如何使用 CURL 與 POST 端點交互?

[英]Django DRF - How to interact with a POST endpoint using CURL?

我是 Django DRF 或 API 開發的新手,請耐心等待;) 除了一些純粹的 get API 視圖之外,我現在想設置我可以向其發送數據的第一個端點,所以我決定與用戶一起去密碼更改。 這是我到目前為止所做的:

視圖.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)

序列化程序.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

現在的問題是如何使用 curl 更新引用的字段,例如“pin”或特別是“password”。

我總是做的第一件事就是給自己一個這樣的新令牌:

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

有了這個令牌,我現在可以到達 update_user 端點,但我不明白如何使用 curl 或一些花哨的瀏覽器擴展與之交互。 有人可以給我一個提示嗎?

我建議使用郵遞員來測試您的 API。 這很簡單,您只需要提供必要的標題和正文並提交即可。

您還可以查看 curl、python、nodejs 等的命令/代碼,以使用您在郵遞員中添加的標題和正文進行 api 調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM