2017-08-13 40 views
0

所以我使用axios为了发送一个JSON请求到Django API。Django API请求是空的使用React

axios({ 
    method: 'post', 
    url: 'http://127.0.0.1:8000/' + this.state.dataRequestEndPoint, 
    data: (reqData) 
}); 

之前的Axios公司拨打我可以看到请求:

Object {nvm: "", a: Array(1), b: Array(1), c: Array(1), d: Array(1)} 

然而,当它到达的Django:

class TargetClass(APIView): 
    def get(self, request): 
    Here request is empty: 
     (Pdb) request.data 
     <QueryDict: {}> 
     (Pdb) request.body 
     b'' 
    def post(self): 
     pass 

我在做什么错?

P.S.试图发送请求以及fetch以及:

fetch('http://127.0.0.1:8000/' + this.state.dataRequestEndPoint, { 
    method: 'POST', 
    body: reqData, 
}) 

它都不工作。

+0

你是否检查过它是如何在浏览器的网络部分发送的?就像任何浏览器的开发者工具一样。 – Fawaz

+1

您是否尝试过使用API​​测试工具(如邮递员或其他)的端点? –

+0

在networks选项卡中看起来没问题。我还没有尝试过任何工具,因为我认为当我设法从url中击中它应该没问题?问题是我需要传递这些参数才能返回适当的数据。 – VnC

回答

1

这是上述问题的解决方案。显然,爱可信需要发送参数:

var reqData = this.state.requestParams 
    axios({ 
    method: 'post', 
    url: 'http://127.0.0.1:8000/' + this.state.dataRequestEndPoint, 
    params: { 
     'a': reqData['a'], 
     'b': reqData['b'] 
    } 
    }) 
    .then(function (response) { 
    console.log(response) 
    }) 
    .catch(function (error) { 
    console.log(error) 
    }); 

不过,我不知道这个解决方案如何好是安全的,明智的。

+0

为什么做你提到的不安全?这是因为如果params? – CatherineAlv