You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native中为Axios GET请求发送原始JSON格式参数

问题原因

Axios发送GET请求时默认不会处理data字段的请求体参数,同时HTTP规范也不推荐GET请求携带请求体,绝大多数后端服务默认也不会解析GET请求的请求体内容,所以你当前的代码无法传递过滤参数。

解决方案

方案1:使用params字段传参(推荐)

将过滤参数放在params字段中,Axios会自动将参数序列化为URL查询字符串,符合HTTP规范,兼容性最好。
修改后代码如下:

const GetData = () => {
  axios({
      method: 'get',
      url: 'http://10.0.2.2:3000/DonarsRecod',
      // 原data字段替换为params
      params: {
        organ: "Lungs"
      }
    })
    .then(function(response) {
      console.log("response", JSON.stringify(response.data))
    })
    .catch(function(error) {
      console.log("error", error)
    })
}

请求最终会发往地址http://10.0.2.2:3000/DonarsRecod?organ=Lungs,后端直接读取查询参数过滤返回匹配记录即可。

方案2:强制GET请求携带JSON请求体(不推荐)

如果后端接口明确要求GET请求必须传递JSON格式的请求体,可以手动指定请求头让Axios携带请求体,注意该方案不符合HTTP规范,部分代理服务器会直接丢弃GET请求的请求体,可能导致请求失败。
修改后代码如下:

const GetData = () => {
  axios({
      method: 'get',
      url: 'http://10.0.2.2:3000/DonarsRecod',
      data: {
        organ: "Lungs"
      },
      // 手动指定请求内容类型为JSON
      headers: {
        'Content-Type': 'application/json'
      }
    })
    .then(function(response) {
      console.log("response", JSON.stringify(response.data))
    })
    .catch(function(error) {
      console.log("error", error)
    })
}
注意事项
  • React Native环境不存在浏览器跨域限制,安卓模拟器使用10.0.2.2访问本地后端服务是正常的,真机测试时需要将URL中的IP替换为后端服务所在设备的局域网IP,确保手机和后端服务在同一局域网下。
  • 优先选择查询参数传参方案,避免不必要的兼容问题。

内容的提问来源于stack exchange,提问作者Mian Muhammad Ramzan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:36:06