使用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
相关产品推荐
相关产品推荐

