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

React Native调用Zoho图片获取API返回data为null如何处理?

Zoho Inventory 图片URL API React Native axios 请求异常解决方案

核心原因分析

Postman请求正常但axios返回data为null,通常是请求配置和API响应特性不匹配导致,Zoho Inventory的图片接口默认会在鉴权通过后直接重定向到图片实际存储地址,或者因请求头不匹配导致响应格式未被axios正确解析。

分步修复方案

  • 核对请求头必填参数

    Zoho Inventory API要求必须携带2个核心请求头,缺失会导致响应解析失败:
    • Authorization头:格式为Zoho-oauthtoken 你的OAuth2访问令牌,注意前缀固定为Zoho-oauthtoken,不要使用Bearer前缀
    • Accept头:显式设置为application/json,要求接口返回JSON格式的图片信息,而非直接返回二进制图片流
  • 调整axios请求配置

    若需要接口返回JSON结构中的图片地址,使用以下标准请求模板:
    import axios from 'axios';
    
    // 调用参数说明:itemId为商品ID,orgId为你的organization_id,zohoToken为有效的Zoho OAuth访问令牌
    const fetchZohoImageUrl = async (itemId, orgId, zohoToken) => {
      try {
        const res = await axios.get(
          `https://inventory.zoho.in/api/v1/items/${encodeURIComponent(itemId)}/image`,
          {
            params: {
              organization_id: orgId
            },
            headers: {
              'Authorization': `Zoho-oauthtoken ${zohoToken}`,
              'Accept': 'application/json'
            }
          }
        );
        // 完整打印响应用于排查和Postman的差异
        console.log('完整响应数据:', res);
        // 图片URL在返回JSON的image_url字段中
        return res.data?.image_url;
      } catch (err) {
        console.error('请求失败详情:', err.response?.data || err.message);
        return null;
      }
    }
    
  • 直接获取重定向图片地址(无需JSON响应)

    如果你不需要其他返回字段,只需要图片的实际访问地址,可以关闭axios自动重定向,直接读取响应头的Location字段,无需解析响应体:
    const fetchZohoDirectImageUrl = async (itemId, orgId, zohoToken) => {
      try {
        const res = await axios.get(
          `https://inventory.zoho.in/api/v1/items/${encodeURIComponent(itemId)}/image`,
          {
            params: { organization_id: orgId },
            headers: { 'Authorization': `Zoho-oauthtoken ${zohoToken}` },
            // 关闭自动重定向
            maxRedirects: 0,
            // 不需要解析响应体,提升请求速度
            responseType: 'stream'
          }
        );
        return res.headers.location;
      } catch (err) {
        // 3xx重定向响应会被axios抛错,需要从错误对象中读取响应头
        if (err.response?.status >= 300 && err.response?.status < 400) {
          return err.response.headers.location;
        }
        console.error('请求失败:', err);
        return null;
      }
    }
    
  • 排查对比请求差异

    如果仍有异常,打印axios的完整请求配置和响应状态、响应头,和Postman的请求参数逐一核对,重点检查:
    • item_id、organization_id参数是否和Postman完全一致,特殊字符是否做了URL编码
    • 访问令牌是否和Postman使用的一致,是否有权限访问对应商品的图片
    • 请求域名是否正确,确认Zoho组织所属区域对应的API域名

内容的提问来源于stack exchange,提问作者Emmanuel Wilson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:18:04