如何使用 axios 在查询字符串中发送数字

How to send a number in query string with axios

提问人:Kim Andy 提问时间:11/12/2023 最后编辑:Kim Andy 更新时间:11/12/2023 访问量:37

问:

我的 react 应用程序调用一个 API 来发布查询字符串。

例如

var param = {

  name: 'Alex',
  age: 22
}

axios({
    baseURL: 'https://aaa.com',
    url: '/user/create', 
    method: 'post', 
    params: param,
    headers: {
      Authorization: `Bearer ${_token}`
    },
})

这工作正常。但是,age 的值是作为字符串插入的。就像这个“22”。 参数中的所有数字都以字符串形式插入。

我尝试使用“qs”。

axios.defaults.paramsSerializer = params => {

    var paramStr = qs.stringify(params)

    return paramStr
}

但结果是一样的。

我需要使用其他编码技术来查询字符串吗?

啊,当我在 Swagger 上调用相同的 API 时,它工作正常。

在大摇大摆的情况下,通话看起来像这样。

    curl -X 'POST' \
  'https://aaa.com:82000/some/create?subtype=time_event&title=%EC%A0%9C%EB%AA%A9&content=%7B%0A%20%20%22intactive%22%3A%20true%2C%0A%20%20%20%22startTimeHour%22%20%3A%2012%2C%0A%20%20%20%22startTimeMinute%22%3A%200%2C%0A%20%20%20%22endTimeHour%22%3A%2019%2C%0A%20%20%20%20%22endTimeMinute%22%3A%200%2C%0A%20%20%22list%22%3A%20%5B%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%22lang%22%20%3A%20%22ko%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%22title%22%20%3A%20%22%EC%A0%9C%EB%AA%A9%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22content%22%20%3A%20%22ss%22%0A%20%20%20%20%20%20%7D%5D%0A%7D&rewards=%7B%7D&startDate=2023-07-20T13%3A00%3A00Z&endDate=2023-07-20T15%3A45%3A00Z' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJ5c2tpbSIsImdyYWRlIjoiTWFpbiIsImlhdCI6MTY5OTI3MTU4MiwiZXhwIjoxNjk5ODc2MzgyfQ.Od2y--LBhOxHzPu9tJgQ0M3y2X7TWaMtT2Pj66tP_g8' \
  -d ''
JavaScript Axios 编码 参数 数字

评论

0赞 Jaromanda X 11/12/2023
事实上,作为一个字符串,你总是发送一个字符串......服务器需要更智能query strings
0赞 Kim Andy 11/12/2023
@Jaromanda 感谢您的评论。但是当我尝试“使用查询字符串发布到 API”时,它工作正常。这太奇怪了。
1赞 Jaromanda X 11/12/2023
不知道想说什么When I try to the work "post to the API with query string"
0赞 Kim Andy 11/13/2023
@JaromandaX 感谢您的关注。我想说的是,当我在 swagger 中使用相同的查询字符串调用相同的 API 时,它工作正常。( 所有数字数据都以数字形式插入。但是当我用我的代码尝试时,参数中的所有数字都以字符串形式插入。

答:

-1赞 Shubham Sapkal 11/12/2023 #1

您可以使用以下代码使用 axios 有效地将数据发送到服务器:

const { data } = await axios.post( 
        `${server}/users/login`,
        {
          // Put your all params here with query
        },
        {
          headers: {
            "Content-Type": "application/json",
            "Authorization": `Bearer ${_token}`
          },
          withCredentials: true,
        }
      ).then( (response) => {
        console.log(response);
      })
      .catch( (error) => {
        console.log("Axios Error: " + error.message);
      });

评论

0赞 Kim Andy 11/12/2023
你能解释一下吗?“//把你所有的参数都用查询来听” --> 我怎样才能把我的参数添加到那里?喜欢这个?{ param: 参数 }
0赞 Jaromanda X 11/12/2023
这与问题中的代码完全不同
0赞 Community 11/13/2023
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。