从GET捕获响应并在下一个请求中使用它

时间:2019-06-24 21:57:40

标签: vue.js vuejs2 axios

我正在尝试使用axios.get的响应,并在axios.post中使用它。如何在POST请求中将响应用作标题?

我尝试将axios.postheaders一起在请求配置中定义:

var config = {
  headers: {
    'Access-Control-Allow-Origin': '*',
    'user': newUser.eid,
    'pass':'bd957c3fbb'
  }
}

/*
const axios = require('axios')

getCrumb() {
  return axios.get('https://jenkins.com/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)', config)
  .then(response => {
    return response
  })
}
*/


/* code to get jenkins crumb */
const getJenkinsCrumb = () => {
  try {
    return axios.get('https://jenkins.com/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)', config)
      .then((crumbValue) => {
        console.log(crumbValue.data);
      })
  } catch (error) {
    console.log(error)
  }
}
getJenkinsCrumb();

我想使用来自上一个GET请求(上方)的响应作为POST调用(下方)中的标头。

var crumbHeader = {
  headers: {
    'Access-Control-Allow-Origin': '*',
  }
}

/* post api to kick off the build */

try {
  return axios.post('https://abc123:bd95701859@jenkins.com/job/Non- PAR/job/Non-Prod-Jobs/job/uitest/job/TestJob/buildWithParameters?nodes=100000&clustername=clustername', crumbHeader)
    .then((postKickTest) =>{
      console.log(postKickTest.data);
    })
} catch (error) {
  console.log(error)
}

1 个答案:

答案 0 :(得分:0)

Axios request config包含一个headers属性,用于指定请求的标头。可以将配置指定为axios.post()的第二个参数(如果使用两个参数的签名)或第三个参数(如果使用三个参数的签名)。此示例演示了axios.post()的两个参数的签名,该签名将headers设置为先前请求的数据结果:

export default {
  methods: {
    async sendRequest() {
      const userResp = await axios.get('https://reqres.in/api/users/2')
      await axios.post('https://reqres.in/api/users', {
        headers: userResp.data,
        data: {
          name: 'john doe',
          job: 'leader',
        }
      })
    },
  }
}

demo


旁注:Access-Control-Allow-Origin是CORS标头,只能由服务器设置。从客户端发送时无效。您可能会错误地认为该标头未到达服务器,因为它无法解决CORS问题。