Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AXIOS中发送GET方法的请求正文会引发错误_Javascript_Reactjs - Fatal编程技术网

Javascript 在AXIOS中发送GET方法的请求正文会引发错误

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

我有一个React应用程序,其中我正在更改POST方法,以使请求体保持原样。它可以很好地处理POST请求,但是当我更改获取方法时,它会给我错误-

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'