使用React和axios进行卷曲

时间:2017-10-25 11:17:33

标签: javascript reactjs curl axios

是否可以使用curl生成axios请求?

卷曲字符串是:

curl -v 'https://developer.api.autodesk.com/authentication/v1/authenticate' --data 'client_id=1234&client_secret=1234&grant_type=client_credentials&scope=bucket:create bucket:read data:write data:read viewables:read' --header 'Content-Type: application/x-www-form-urlencoded' -k | jq '.'

我试着这样做:

getToken() {

    axios.get({
        url: 'https://developer.api.autodesk.com/authentication/v1/authenticate',
        data: {
            client_id: '1234',
            client_secret: '1234',
            grant_type : 'client_credentials',
            scope: 'data:read data:viewables'
        },
        beforeSend: function(xhr) {
             xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
        }, success: function(data){
            console.log(data)
        }
    })        
}

但没有运气 - 例如没有任何反应。

我之前使用cygwin - 终端发出curl - 请求,我成功获得了回复

{
 "token_type": "Bearer",
 "expires_in": 1799,
 "access_token": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imp3dF9zeW1tZXRyaWNfa2V5X2RldiJ9.eyJjbGllbnRfaWQiOiJjWTFqcm1rQXhPSVptbnNsOVhYN0puVURtVEVETGNGeCIsImV4cCI6MTQ4NzU2NzgwMSwic2NvcGUiOlsiZGF0YTpyZWFkIl0sImF1ZCI6Imh0dHBzOi8vYXV0b2Rlc2suY29tL2F1ZC9qd3RleHAzMCIsImp0aSI6InJZcEZZTURyemtMOWZ1ZFdKSVVlVkxucGNWT29BTDg0dFpKbXlmZ29ORW1MakF0YVVtWktRWU1lYUR2UGlnNGsifQ.uzNexXCeu4efGPKGGhHdKxoJDXHAzLb28B2nSjrq_ys"
}

那么,这可能与React / axios一起使用吗?

除了问题,我可以将收到的令牌传递给另一个curl请求吗?

1 个答案:

答案 0 :(得分:4)

那不是真的"卷曲请求"。这是一个HTTP请求。 Curl只是用于通过命令行执行HTTP(和其他)操作的工具。

在您的HTTP请求中,我可以看到您正在使用axios.get(),但是您正在尝试发布请求(您已经拥有了一个数据对象)试图发送)。所以你应该使用axios.post()。最好查看axios page以查看HTTP帖子的语法,包括如何在帖子中包含数据和标题对象。

在回答你的第二个问题时,是的,你可以。在你的第一个axios帖子的.then()部分,你可以使用响应做另一个axios post,例如

axios.post(
    ...
).then(response => {
    // do another post with response.token or whatever as the data
})
...