Javascript 在Vue中使用Axios将查询参数传递到URL的最佳方法?

Javascript 在Vue中使用Axios将查询参数传递到URL的最佳方法?,javascript,json,vue.js,axios,Javascript,Json,Vue.js,Axios,我试图完成的是,当页面第一次加载时,我将使用Axios使用基本URL回调JSON对象。然后,我想在单击按钮时向基本URL添加查询参数。因此,如果单击按钮时基本URL为“test.com”,则会在URL中添加一个查询参数,Axios会再次运行,并返回一个不同的JSON对象。所以URL看起来像“test.com?posttype=new” 我目前所做的是使用基本URL创建并运行Axios,当单击按钮时,运行一个再次运行Axios的方法,但这次它将查询参数添加到URL,因此在Vue中看起来像: cr

我试图完成的是,当页面第一次加载时,我将使用Axios使用基本URL回调JSON对象。然后,我想在单击按钮时向基本URL添加查询参数。因此,如果单击按钮时基本URL为“test.com”,则会在URL中添加一个查询参数,Axios会再次运行,并返回一个不同的JSON对象。所以URL看起来像“test.com?posttype=new”

我目前所做的是使用基本URL创建并运行Axios,当单击按钮时,运行一个再次运行Axios的方法,但这次它将查询参数添加到URL,因此在Vue中看起来像:

 created () {

    axios
      .get(this.jobsListURL)
      .then(response => (this.jobsList = response.data.data))
      .catch(error => {
        console.log(error)
        this.errored = true
      })
      .finally(() => this.loading = false)

    },

  methods: {
    getJobs: function () {

    axios
      .get(this.jobsListURL + '?' + this.AxiosParams)
      .then(response => (this.jobsList = response.data.data))

      .catch(error => {
        console.log(error)
        this.errored = true
      })

      .finally(() => this.loading = false)
  },
因此,在上面的示例中,jobsListURL是JSON对象的基本URL,AxiosParams是我调用的一个方法,用于在单击按钮时向URL添加参数。因此,当单击按钮时,它正在运行getJobs方法,以使用带有参数的URL重新运行Axios。我不确定这是否是最好的方法,或者是否有更好的方法向URL添加查询参数并以这种方式获取新的JSON对象


在我进入这条路线之前,我只是想了解一些反馈,看看是否有更好的方法来解决这个问题?

如果this.AxiosParams是一个类似{“posttype”:“new”}的json对象,这将起作用:

axios.get(this.jobsliturl,this.AxiosParams)

但是当值是数组时,这不起作用,那么您可以添加一个paramsSerializer

//从“qs”导入qs;(https://www.npmjs.com/package/qs)
this.http=axios.create({
基本URL:`https://mydomain/api/v1/`,
参数化器:(参数)=>{
返回qs.stringify(params,{arrayFormat:'repeat'});
},
});

this.http.get('jobs',this.AxiosParams)
如果要传递对象,可以使用第二个参数
.get

axios.get(this.jobsListURL, {
  params: this.axiosParams
})
这基本相同,但您不必对URL进行字符串操作

可以按如下方式构建该对象:

computed: {
    axiosParams() {
        const params = new URLSearchParams();
        params.append('param1', 'value1');
        params.append('param2', 'value2');
        return params;
    }
}

这记录在第二个GET请求示例@Jeff Thank!由于某种原因,查看文档时,我肯定错过了这一点。我将按照我开始的路线走。2018年12月提供的@George链接指向了这个版本:但是我仍然没有看到这样的第二个GET请求example@fedorqui“SOstopharming”这是第二个
axios.get
,或者在注释之后“/(可选)上述请求也可以按以下方式执行除非你指的是computed属性,在这种情况下,它只是javascrip webapi的一部分,很确定它可能只是一个普通的对象,就像我想象的axios为你编码的值一样,但最好是安全的,抱歉@George oh是的,我指的是Jeff优秀答案的第二部分,其中他提到了如何构建对象(如果您多次提供相同的参数,并且希望避免
param[]
的事情,并且仍然得到
param
,这一点非常有用;中也解释了这一点)。谢谢你的更新