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

使用Apps Script调用Shopware 6管理API遇Unsupported Media Type错误求助

解决Shopware 6 Management API返回"Unsupported Media Type"的问题

我一眼就看到几个关键问题导致了这个错误,咱们一步步来修正:

核心问题:请求方法用错了

你现在用的是GET请求,但要修改产品名称这种写操作,Shopware 6 API要求用PUT(全量更新)或者PATCH(部分更新)方法。GET请求是用来读取资源的,根本不支持传递请求体,这就是你拿到"Unsupported Media Type"的主要原因。

其他需要调整的点

  • 你把payload注释掉了,就算方法对了,也没法把新的产品名称传给API
  • options里重复设置了contentType和headers里的Content-Type,虽然不算致命,但保持统一更规范

修正后的代码

function setProductName(){
    let url = CONFIG.url+"/api/product/" + "007f477135584b3c95f9437c4a9fc1ba"
    Logger.log(url)
    var payload = JSON.stringify({
        "data": {
            "name":"API test"
        }
    });

    var auth_token = getAuthenticationToken();
    let options = {
        "method": "PATCH", // 用PATCH做部分更新,只修改name字段
        "headers": {
            "Authorization": "Bearer " + auth_token,
            "Content-Type": "application/json",
        },
        "payload": payload, // 取消注释,传递修改内容
        "muteHttpExceptions": false
    };
    req = UrlFetchApp.getRequest(url, options)
    Logger.log(req)
    let response = UrlFetchApp.fetch(url, options);
    let responseData = JSON.parse(response.getContentText());
    Logger.log(responseData)

    return responseData;
}

补充说明

  • 如果你想做全量更新(需要传递产品的所有必填字段),可以把method改成PUT,但一般推荐用PATCH来只更新需要修改的字段,更高效。
  • 确保你的auth_token有足够的权限修改产品资源(比如product:write权限),不然可能会遇到权限错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:15:50