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

如何通过Strapi的PUT API仅修改嵌套对象中的单个键

解决Strapi PUT API修改嵌套字段不丢失其他数据的问题

问题原因

Strapi的PUT接口默认是全量替换整个资源对象,当你只传递seo: { key4: 'test-url' }时,会把原有的seo对象完全替换成这个新结构,导致其他key1、key2、key3字段被清空。

解决方案

方案1:使用PATCH请求(推荐)

Strapi支持PATCH方法实现部分更新,只需传递需要修改的字段即可,不会影响未提及的任何字段(包括嵌套对象里的其他键)。

修改后的Axios代码:

await axios({
  method: 'patch',
  url: `${strapiBaseUrl}/objects/${obj.id}`,
  headers: {
      'Content-Type': 'application/json'
  },
  data: {
    data: {
      seo: {
        key4: 'test-url'
      }
    }
  }
})

方案2:若必须使用PUT请求

需要先获取当前对象的完整数据,保留所有原有字段,仅修改目标key4后再完整提交:

// 1. 获取当前对象的完整数据
const currentObj = await axios.get(`${strapiBaseUrl}/objects/${obj.id}`);

// 2. 保留原有seo的所有字段,仅更新key4
const updatedSeo = {
  ...currentObj.data.data.seo,
  key4: 'test-url'
};

// 3. 用PUT提交完整的资源数据
await axios({
  method: 'put',
  url: `${strapiBaseUrl}/objects/${obj.id}`,
  headers: {
      'Content-Type': 'application/json'
  },
  data: {
    data: {
      ...currentObj.data.data, // 保留slug、blocks等顶级字段
      seo: updatedSeo
    }
  }
})

说明

  • PATCH是Strapi官方推荐的部分更新方式,无需额外请求,更高效简洁。
  • PUT需要传递完整资源结构,适合需要全量替换的场景,否则会丢失未传递的字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:01:07