【问题标题】:React - GET and POST requests with axiosReact - 使用 axios 的 GET 和 POST 请求
【发布时间】:2019-10-25 16:51:46
【问题描述】:

在我的应用程序中,我需要 GET 一些数据(为此我提供了本机 authtoken)。

不过,在同一事件中,我还需要 POST 供几个端点使用的第二个令牌,用于外部后端 api 调用。

我如何在下面使用axios 使用我的工作代码POST 这个second 令牌?

我应该扩展 Authorization Bearer 还是简单地将 POST Spotify Token 作为字符串数据? 怎么样?

我的代码:

  getData(event) {
    const {token} = this.props.spotifyToken

    const options = {
      url: `${process.env.REACT_APP_WEB_SERVICE_URL}/endpoint`,
      method: 'get',
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${window.localStorage.authToken}`
      }
    };

    return axios(options)
    .then((res) => {
      console.log(res.data.data)
   })    
    .catch((error) => { console.log(error); });
  };

【问题讨论】:

  • 你有没有研究过异步?
  • no..你会如何申请?
  • 如果你想同时获取和发布,那么你可以使用 Promise.all
  • 如果您回答提供此解决方案,我很乐意接受

标签: javascript reactjs xmlhttprequest axios


【解决方案1】:

对于应用到您的代码的异步等待看起来像这样。

async getData(event) {
  const {token} = this.props.spotifyToken

  let getRes = await axios.get(`${process.env.URL}/endpoint` {
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${window.localStorage.authToken}`
    }
  }

  let postRes = await axios.post(`${process.env.URL}/endpoint` {
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${window.localStorage.authToken}`
    }
  }

  console.log(getRes.data.data);
  console.log(postRes.data.data);
};

【讨论】:

    【解决方案2】:

    在这种特定情况下,需要令牌来在后端获取数据,我发现在 url 传递令牌更合适,如下所示:

    @endpoint.route('/endpoint/<select>/<user_id>/<token>', methods=['GET'])
    def endpoint(name, user_id, token):
    # business logic
    

    和:

    const options = {
      url: `${process.env.REACT_APP_WEB_SERVICE_URL}/endpoint/${select}/${userId}/${this.props.spotifyToken}`,
      method: 'get',
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${window.localStorage.authToken}`
      }
    };
    

    否则,后端代码将运行两次,分别用于 POST 和 GET,这在我的情况下是不需要的。

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 1970-01-01
      • 2022-09-17
      • 2023-01-21
      • 2020-07-29
      • 2021-07-12
      • 1970-01-01
      • 2023-03-20
      • 2020-04-26
      相关资源
      最近更新 更多