javascript - 在 AXIOS 中为 GET 方法发送请求正文会引发错误
问题描述
我有一个 React 应用程序,我正在将 POST 方法更改为 GET 请求正文。它适用于 POST 请求,但是当我将方法更改为 GET 时,它给了我错误-
message: "org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public
我的前端代码-
export const setData = (getData) => dispatch => {
axios({
method: 'GET',
url: 'http://localhost:8080/api',
headers: {
'Content-Type': 'application/json'
},
data: getData
})
.then (response => {
dispatch({
type: API_DATA,
payload: response.data
})
dispatch({
type: SET_SEARCH_LOADER,
payload: false
})
})
.catch(function(error) {
})
}
有人可以让我知道我在这里缺少什么。根据我的理解,http 允许拥有 GET 方法的请求正文。
解决方案
根据我的理解,http 允许拥有 GET 方法的请求正文。
虽然这在技术上是正确的(尽管说它只是没有明确禁止它可能更准确),但这是一件非常奇怪的事情,并且大多数系统不希望 GET 请求具有正文。
因此,许多图书馆将无法处理此问题。
Axois的文档说:
// `data` is the data to be sent as the request body // Only applicable for request methods 'PUT', 'POST', and 'PATCH'
在后台,如果您在 Web 浏览器中运行 Axios 客户端,它将使用 XMLHttpRequest。如果您查看它的规范,它会说:
client . send([body = null])
发起请求。body 参数提供请求主体(如果有),如果请求方法是 GET或 HEAD,则将被忽略。
推荐阅读
- reactjs - 拉动 Scrollview 以显示 View - React Native
- amazon-web-services - 如何使用 Amazon Lex 从客户那里获取语音输入并使用 amazon connect 将该信息传递到正确的路径?
- powershell - 如何停止 powershell 舍入数字
- javascript - 点击后如何隐藏按钮
- node.js - 在 Docker 上构建 vue/quasar 应用程序时出错
- hazelcast - 使用 Hazelcast Helm 时如何启用 CP 子系统
- c# - 无法在 Asp.net Web 窗体应用程序中填充网格 onclick 事件
- javascript - 如何将数据从内容脚本传递到 popup.html?
- node.js - 将 node:12-alpine 与 puppeteer@1.19 一起使用的 Dockerfile 是什么?
- javascript - React/Redux 处理双向数据