Javascript 在AXIOS中发送GET方法的请求正文会引发错误
我有一个React应用程序,其中我正在更改POST方法,以使请求体保持原样。它可以很好地处理POST请求,但是当我更改获取方法时,它会给我错误-Javascript 在AXIOS中发送GET方法的请求正文会引发错误,javascript,reactjs,Javascript,Reactjs,我有一个React应用程序,其中我正在更改POST方法,以使请求体保持原样。它可以很好地处理POST请求,但是当我更改获取方法时,它会给我错误- message: "org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public 我的前端代码- export const setData = (getData) => dispatch
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方法有一个请求主体。这不是axios,错误源于您正在与之交谈的java后端。请求正文中缺少公共字段 如果您只想将数据作为参数发送(这可能是奇数),请使用
params
而不是data
(如下所示:)传递数据
我个人认为您的API不应该支持请求主体的GET(与开发人员交谈并要求提供文档)
根据我的理解,http允许GET方法有一个请求体
虽然这在技术上是正确的(虽然更准确地说,它只是没有明确地禁止它),但这是一件非常奇怪的事情,而且大多数系统都不希望GET请求有实体
因此,很多图书馆不会处理这个问题
报告说:
在后台,如果在web浏览器中运行Axios客户端,它将使用XMLHttpRequest。如果你看,上面写着:
客户端。发送([body=null])
启动请求。body参数提供请求主体(如果有),如果请求方法为GET或HEAD,则忽略该参数
如果要在axios中使用get请求发送参数,则应将参数作为
params
发送
如果要设置“内容类型”:“application/json”
并随get请求发送参数,还应发送一个空的数据
对象
例如:
const AUTH_TOKEN='Bearer TOKEN'
常量配置={
标题:{
“内容类型”:“应用程序/json”,
“接受”:“应用程序/json”,
“授权”:授权令牌,
},
数据:{},
参数:{
“post_id”:1
}
}
axios.get(“http://localhost/api/v1/posts/“,配置)
Axios浏览器上的GET请求使用XMLHttpRequest,它不支持请求正文,因此您面临这个问题。查看github了解更多详细信息OP询问为什么缺少请求正文(即Axios),我没有得到它。我错过了什么吗?@Quentin是的,你是对的,我把问题搞错了。我修改了我的答案。我的getData是我试图发送的一个emptyObject。这行不行吗?@techiequestie-不行。浏览器将忽略您试图设置为请求主体的任何内容,并在没有请求主体的情况下发送GET请求。因此,我应该如何处理它?我是否需要向请求中添加任何参数?请求应该是POST请求,或者服务器不应该期望GET请求中有请求正文。我不知道请求请求的是什么,所以我不能说哪一个是正确的方法。我有另一个api,从后端,他们将数据作为参数附加到api中,所以它可以工作。但对于这个api,它并不存在,所以,我试图弄清楚这是否是后端必须具备的,或者是否有任何方法可以通过UI处理这个问题。
// `data` is the data to be sent as the request body
// Only applicable for request methods 'PUT', 'POST', and 'PATCH'