当前位置: 首页 > 知识库问答 >
问题:

VueJs Axios-请求报头

陶裕
2023-03-14

编辑:这可能是CORS的问题,我在本地主机上。。。

在Javascript中,我可以设置请求头,获取并返回如下响应:

    $(function() {
    var params = {
        // Request parameters
    };

    $.ajax({
        url: "https://demo-api.com/",
        beforeSend: function(xhrObj){
            // Request headers
            xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{API KEY}");
        },
        type: "GET",
        // Request body
        data: "{body}",
    })
    .done(function(data) {
        alert("success");
    })
    .fail(function() {
        alert("error");
    });
});

问题:

我想学习VueJs,并想用VueJs Axios复制这个,但是我很困惑如何设置请求标题,因为我在上面的JS中。

以下是我失败的尝试:

    new Vue({
      el: '#app',
      data () {
        return {
          info: null,
          loading: true,
          errored: false,
          response: false
        }
      },
      mounted () {
          axios({
              method: 'get',
              url: 'https://demo-api.com/',
              headers: { 
                'Ocp-Apim-Subscription-Key': 'API KEY',
              } 
            })
            .then(response => {
              console.log(response)
              this.response = true
            })
            .catch(error => {
              console.log(error)
              this.errored = true
            })
            .finally(() => this.loading = false)
        }
    })

如何像在上面的JS中那样专门设置请求头。我想学习如何在Vue/Axios中实现以下功能

 xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{API KEY}");

谢谢。

共有2个答案

焦光霁
2023-03-14

你的问题不是标题。你设置得很好。它与URL有关。您正在这样构建您的URL:

url: 'https://demo-api.com/{demoId}?" + $.param(params)',

您的URL字符串错误。它在结尾处有一个额外的引用。这就是为什么你有404错误。这就是你需要做的:

url: "https://demo-api.com/{demoId}?" + $.param(params),

另外,如果您使用的是Vue而不是jQuery,那么就不应该使用$。参数功能。相反,请使用适当的查询字符串模块,如qs。因此,您的实际URL如下所示:

url: `https://demo-api.com/${demoId}?${qs.stringify(params)}`,

这里我们使用ES2015字符串插值。

芮明知
2023-03-14

在Vue.js中创建和挂载事件之间的差异

阅读一个答案,并尝试使用创建()生命周期挂钩,而不是挂载()

此外,您可以使用此标头为请求创建单独的axios实例,然后在您的代码中使用它:

axios-demo-api.js

import axios from 'axios'

const instance = axios.create({
    baseURL: 'https://demo-api.com',
    headers: {'Ocp-Apim-Subscription-Key': 'API KEY'} //don't forget to change API key to your exact key
})

export default instance

用法:

import axiosInstance from 'axios-demo-api';


export default {

 created() {
  axiosInstance.get('/{demoId}?' + $.param(params))
                .then(response => {
              console.log(response)
              this.response = true
            })
            .catch(error => {
              console.log(error)
              this.errored = true
            })
            .finally(() => this.loading = false)
 }
}
 类似资料:
  • HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ① 是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttpMethodFilter,允许你通过“_method”的表单参数指定这些特殊的HTTP

  • 我正在尝试为Rest-Assured(RESTful API)生成cucumber报告,并且我还热衷于捕获cucumber报告中的请求/响应。我想知道是否有人已经实现了这一点或可以提供一些指示。

  • 后端 前端 请求报错

  • 发送get请求,请求参数内容中有[]\好像都会报400错误,这是为什么?

  • 请问大佬们,如何通过axios,去实现post请求,并且请求参数为JOSN格式传入body内?我这样的写法有什么错误吗?请求就提示跨域报错

  • 本文向大家介绍Python小白学习爬虫常用请求报头,包括了Python小白学习爬虫常用请求报头的使用技巧和注意事项,需要的朋友参考一下 客户端HTTP请求 URL只是标识资源的位置,而HTTP是用来提交和获取资源。客户端发送一个HTTP请求到服务器的请求消息,包括以下格式: 请求行、请求头部、空行、请求数据 一个典型的HTTP请求 常用请求报头 1. Host (主机和端口号) Host:对应网址