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

     2023-03-28     40

关键词:

【中文标题】在 AXIOS 中为 GET 方法发送请求正文会引发错误【英文标题】:Sending Request body for GET method in AXIOS throws error 【发布时间】:2019-05-29 01:16:00 【问题描述】:

我有一个 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 方法的请求正文。

【问题讨论】:

浏览器上的 Axios GET 请求使用不支持请求正文的 XMLHttpRequest,因此您面临此问题。查看 github 上的this issue 了解更多详情 【参考方案1】:

据我了解,http 允许拥有 GET 方法的请求正文。

虽然这在技术上是正确的(虽然说它只是没有明确禁止它可能更准确),但这是一件非常奇怪的事情,并且大多数系统不希望 GET 请求具有正文。

因此,很多图书馆都无法处理这个问题。

documentation for Axois 说:

  // `data` is the data to be sent as the request body
  // Only applicable for request methods 'PUT', 'POST', and 'PATCH'

实际上,如果您在 Web 浏览器中运行 Axios 客户端,它将使用 XMLHttpRequest。如果您查看the specification for that,它会说:

client . send([body = null])

发起请求。 body 参数提供请求正文(如果有),如果请求方法为 GET 或 HEAD,则被忽略。

【讨论】:

我的 getData 是一个空对象,我正在尝试发送。这行不通吗? @techiequestie — 不,不会。浏览器将忽略您尝试设置为请求正文的任何​​内容,并在没有任何内容的情况下发送 GET 请求。 那我该怎么处理呢?我需要在请求中添加任何参数吗? 请求应该是 POST 请求,或者服务器应该期待 GET 请求的请求正文。我不知道请求的要求是什么,所以我不能说哪种方法是正确的。 我有另一个 api 来自后端,他们已将数据作为参数附加到 api 中,所以它可以工作。但是对于这个 api,它不存在,我试图弄清楚这是否是后端必须具备的,或者有什么方法可以通过 UI 处理。【参考方案2】:

如果你想在axios中用get请求发送参数,你应该发送参数为params

如果您想设置"Content-type":"application/json" 并使用get 请求发送参数,您还应该发送一个空的data 对象。

例如:

const AUTH_TOKEN = 'Bearer token'
const config = 
    headers: 
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'Authorization': AUTH_TOKEN,
    ,
    data: ,
    params: 
        "post_id": 1
    

axios.get("http://localhost/api/v1/posts/", config)

【讨论】:

【参考方案3】:

这不是 axios,错误来自您正在与之交谈的 java 后端。您的请求正文中的公共字段丢失。

如果您只想将数据作为参数发送(这很奇怪),请使用params 而不是data 传递它(如下所示:https://github.com/axios/axios#example)。

我个人认为您的 API 不应该支持带有请求正文的 GET(与开发人员交谈并索要文档)。

【讨论】:

OP 询问为什么缺少请求正文( Axios) 我没明白。我在这里错过了什么吗? @Quentin 是的,你是对的,我问错了问题。我修改了答案。

如何使用 axios get 请求发送正文数据和标头?

】如何使用axiosget请求发送正文数据和标头?【英文标题】:Howtosendbodydataandheaderswithaxiosgetrequest?【发布时间】:2020-08-1610:53:27【问题描述】:我试过了axios.get(url,headers:,data:)但它不适用于这个。【问题讨论】:【参考方案1】:... 查看详情

axios请求中未发送正文数据

】axios请求中未发送正文数据【英文标题】:bodydatanotsentinaxiosrequest【发布时间】:2019-03-0419:02:20【问题描述】:我正在尝试通过axios请求将数据发送到我的后端脚本,但正文看起来是空的。这是前端发送的请求:axios.request(method:... 查看详情

为啥 axios get 方法请求发送两次?

】为啥axiosget方法请求发送两次?【英文标题】:whyaxiosgetmethodrequestsendtwice?为什么axiosget方法请求发送两次?【发布时间】:2019-09-1308:11:09【问题描述】:我运行axiosget方法调用php脚本,但是请求发送两次如何解决这个问题呢。... 查看详情

在 Axios 中的 GET 方法 URL 搜索参数中发送嵌套对象

】在Axios中的GET方法URL搜索参数中发送嵌套对象【英文标题】:SendnestedobjectsinGETmethodURLsearchparamsinAxios【发布时间】:2019-07-2510:11:45【问题描述】:我正在尝试使用如下URL搜索参数发送请求,但我无法访问服务器端的嵌套对象filte... 查看详情

Azure APIM 在预检和从 axios 发出的 GET 请求时返回空响应正文,状态代码为 200

】AzureAPIM在预检和从axios发出的GET请求时返回空响应正文,状态代码为200【英文标题】:AzureAPIMreturnsemptyresponsebodywithstatuscode200onpreflightandGETrequestsmadefromaxios【发布时间】:2021-09-2120:00:11【问题描述】:我们在AzureAPI管理中添加了... 查看详情

在正文中发送 GET 请求参数

】在正文中发送GET请求参数【英文标题】:SendingGETrequestparametersinbody【发布时间】:2017-06-2310:35:25【问题描述】:我有一个接受许多参数的API。传递参数的值会超过URLHeader的长度。我正在使用Postman客户端在正文中传递参数,但... 查看详情

Axios DELETE 请求正文被发送为空

】AxiosDELETE请求正文被发送为空【英文标题】:AxiosDELETErequestbodybeingsentempty【发布时间】:2019-10-1620:27:41【问题描述】:我正在尝试向我的PHP/Codeigniterapi发送删除请求。从NativeScript-Vue前端发送。asyncdeleteBackedupImages(identifiers)console... 查看详情

react中如何通过axios get方法发送参数?

】react中如何通过axiosget方法发送参数?【英文标题】:Howtosendparametersthroughaxiosgetmethodinreact?【发布时间】:2020-08-2422:38:24【问题描述】:我有一个axiosGET方法,我需要通过get请求传递参数。我正在像这样在客户端(React.js)中调... 查看详情

尝试在 Axios GET 的正文中发送数据以在 Django 后端使用,但 request.body 的打印为空

】尝试在AxiosGET的正文中发送数据以在Django后端使用,但request.body的打印为空【英文标题】:TryingtosenddatainthebodyofaAxiosGETtouseinDjangobackend,butprintofrequest.bodyisempty【发布时间】:2019-04-1307:55:20【问题描述】:根据Axios,这应该是可能... 查看详情

如何使用 HttpClient 在 GET 请求正文中发送内容?

】如何使用HttpClient在GET请求正文中发送内容?【英文标题】:HowtouseHttpClienttosendcontentinbodyofGETrequest?【发布时间】:2017-04-1501:07:25【问题描述】:目前要向API接口发送参数化的GET请求,我正在编写以下代码:api/master/city/filter?city... 查看详情

axios笔记(代码片段)

...有参请求(解决方式三):3.axios并发请求3.1方法一(数组方式):3.2方法二(spread方式):4.axios全局配置5.axios实例6.axios拦截器6.1请求方向的拦截器6.2响应方向的拦截器7.axios在vue中的模块封装7.1方式一&#x... 查看详情

axios.post 正在发送一个 GET 请求

】axios.post正在发送一个GET请求【英文标题】:axios.postissendingaGETrequest【发布时间】:2018-03-1814:05:10【问题描述】:我有一个使用react/axios的chrome扩展。在那个应用程序中,我正在发送一个发布请求,如下所示:exportconstcreateComment... 查看详情

我应该如何在 axios GET 请求中发送 JWT 令牌? [复制]

】我应该如何在axiosGET请求中发送JWT令牌?[复制]【英文标题】:HowshouldIsendJWTtokeninaxiosGETrequest?[duplicate]【发布时间】:2019-02-1622:24:17【问题描述】:我是Vue.js新手,想在组件中向受限api发出请求:computed:token()returnthis.$store.getters... 查看详情

如何强制 axios GET 请求发送标头?

】如何强制axiosGET请求发送标头?【英文标题】:HowtoforceaxiosGETrequesttosendheaders?【发布时间】:2019-10-2106:02:14【问题描述】:尽管我的代码在Vue的一个组件中,但问题出在Axios,让我解释一下原因。所以,我正在尝试获取一些信... 查看详情

有没有办法在请求正文中为 Next-Auth 中的令牌调用发送客户端凭据?

】有没有办法在请求正文中为Next-Auth中的令牌调用发送客户端凭据?【英文标题】:IsthereawaytosendclientcredentialsinrequestbodyforthetokencallinNext-Auth?【发布时间】:2022-01-1705:47:59【问题描述】:我正在使用Next-Auth实现身份验证,并且我... 查看详情

java.net.ProtocolException:方法不支持请求正文:GET

】java.net.ProtocolException:方法不支持请求正文:GET【英文标题】:java.net.ProtocolException:methoddoesnotsupportarequestbody:GET【发布时间】:2019-09-1014:44:29【问题描述】:我正在尝试从androidstudio发送POST请求,但收到一些错误,例如:E/ERROR:... 查看详情

Flutter:为 Http GET 请求发送 JSON 正文

】Flutter:为HttpGET请求发送JSON正文【英文标题】:Flutter:SendJSONbodyforHttpGETrequest【发布时间】:2019-08-1508:08:16【问题描述】:我需要从我的Flutter应用程序向API发出GET请求,该请求要求请求正文为JSON(原始)。我在Postman中使用JSON... 查看详情

使用 Auth Headers 发送 axios get 请求时出现 401 错误

】使用AuthHeaders发送axiosget请求时出现401错误【英文标题】:401ErrorwhensendingaxiosgetrequestwithAuthHeaders【发布时间】:2021-05-0118:03:45【问题描述】:在我的react项目中,我一直在使用axios来帮助从MongoDB获取数据。当我将身份验证中间... 查看详情