如何向 Django rest api 发出 thunk HTTP POST 请求

how to make thunk HTTP POST request to Django rest api

我对此很陌生,所以我会先向您展示错误,然后再展示我的思考过程。

我正在尝试使用 thunk(redux 中的 Http 请求)向我在 django 中的个人休息 api 发出 post 请求。 (因此它可以 运行 cURL 命令并使用授权码获取访问令牌并从 API 获取用户数据) 当我发出此请求时,网络 return 的状态为 201 以保持其正常工作,而我的控制台将调度记录为已拒绝,并给出错误消息:“JSON 输入的意外结束”。在此消息中,有效负载未定义,我的有效负载位于 arg 下的元数据中。

经过大量研究,我似乎需要 JSON.strigify 在我的前端做一些事情,或者 django 正在接收一个空对象并且不知道如何处理它。我相信是后者,但不确定如何进行。这是我的代码:

前端: slice.py

    import {createAsyncThunk} from '@reduxjs/toolkit'
        
    export const postRequest= createAsyncThunk('slice/postRequest',
          async postData => {
            const response=
            await client.post('url', {slice:postData})
            return response.slice
          }
        )

component.py

  import {useDispatch} from 'react-redux'
  import {postRequest} from './slice'

  const Component = () => {
      const dispatch=useDispatch()
      const authCode= 'samplecode'
      const data={authCode:`${authCode}`, userData:{}}
      dispatch(postRequest(JSON.stringify(data))

     return(null)
 }

export default Component

后端:

models.py 来自 django.db 导入模型

    class UserData(models.Model):
      authCode=models.CharField(max_length=100, default='')
      userData= models.JSONField

serializers.py

from rest_framework import serializers
from .models import *

class UserDataSerializer(serializers.ModelSerializer):
  class meta:
    model=UserData
    fields= ('authCode', 'userData')

views.py

from .models import *
from .serializers import *
from django.views.decorators.csrf import csrf_excempt
from rest_framework.decorators import api.view
from rest_framework.resposne import Response
from rest_framework import status

@api_view(['POST'])
@csrf_excempt
define restapi(request)
  if request.method == "POST":
    serializer = UserDataSerializer(data = request.data
    if serializer.is_valid():
      serializer.save
      return Response(status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_Request

我也试过 return 状态为 204,没有 JSON.stringify。 我注意到,当我向 json 服务器发出成功的 post 请求时,它会使用 args 中的有效载荷发出请求,如果成功,有效载荷将移动到有效载荷,但它是我猜我当前的错误正在发生,因为有效负载在 thunk 调度开始时是空白的。不过我真的不确定

我解决了这个问题,很愚蠢。

我使用的是自制客户端,但我没有足够的经验来做这件事。我刚得到 axios 并将其用作客户端,并且运行良好。我还简化了组件中的请求,使其没有 JSON.stringify 并且没有反引号。