如何在响应(GET / PUT / POST)中将curl命令转换为Axios调用

时间:2019-03-30 20:39:47

标签: javascript reactjs curl cors axios

在React中将cURL命令转换为有效的Axios调用时遇到问题。我需要做3件事(并且执行cURL命令),即GET,PUT和POST。我在S.O上只找到一种资源。虽然我仍然无法完成通话,但对您有所帮助。更重要的是,如果我只是对网站进行抓取,就会遇到CORS政策问题。是否有办法解决或让React使用cURL命令?

我用来转换此cURL命令的资源是: https://github.com/axios/axios/issues/745

然后,我尝试使用Axios文档来确保我的Synatax是正确的: https://github.com/axios/axios#axioscreateconfig

我能够进行访存,但是由于CORS问题,我必须使用Heroku的“ CORS ANYWHERE”链接,但这在尝试PUT和POST时会产生问题。此链接为('https://cors-anywhere.herokuapp.com/')+数据库的URL。

CURL命令(有效): GET-

curl -X GET -i -H "Content-Type: application/json" https://beer.fluentcloud.com/v1/beer

开机自检-

curl -X POST -i -H "Content-Type: application/json" -d '{"name":"Michelob Ultra","likes":"-5"}' https://beer.fluentcloud.com/v1/beer

输入-

curl -X PUT -i -H "Content-Type: application/json" -d '{"likes":"22"}' https://beer.fluentcloud.com/v1/beer/1

我尝试过的Axios GET请求:

  axiosGetData = () => { //Not working
    axios({
      url: "https://beer.fluentcloud.com/v1/beer/",
      method: get,
      headers: { "Content-Type": "application/json" }
    })
      .then(res => {
        console.log(`Axios Call completed: ${res}`)
      });
  }

Axios调用出错:

TypeError: config.method.toLowerCase is not a function
    at Axios.request (Axios.js:43)
    at wrap (bind.js:11)
    at App._this.axiosGetData (App.js:53)
    at App.js:46

3 个答案:

答案 0 :(得分:0)

所以问题可能出在method: get上。这里的get是一个变量。 您的情况是不确定的。 因此,您可能希望将其用作字符串。

例如:

axiosGetData = () => { //Not working
    axios({
      url: "https://beer.fluentcloud.com/v1/beer/",
      method: 'get',
      headers: { "Content-Type": "application/json" }
    })
      .then(res => {
        console.log(`Axios Call completed: ${res}`)
      });
  }

这应该可以解决您的问题。

答案 1 :(得分:0)

我认为您找到的解决方案是正确的-但我认为您必须将get用作字符串而不是变量,因为它是undefined 为了避免将来出现此类错误,您可以使用standard

之类的短绒棉

答案 2 :(得分:0)

尝试一下

const routes: Routes = [
  {
    path: 'child',
    component: MyComponent
  }
]

axios({ //... method: 'get', //... }).then(onFulfilment); 属性应为method